等同于使用 c# wpf 的 IsDisposed
Equivalent to IsDisposed using c# wpf
我正在为 tut 视频开发一个自定义键控程序,我正在使用 MouseKeyHook,我正在使用此处找到的示例代码:https://github.com/gmamaladze/globalmousekeyhook/blob/vNext/Demo/Main.cs 使基本构造正常工作。
由于该示例是为 win 表单设计的,所以我在一行中遇到了问题。我通过省略 - if (IsDisposed) return;
第 176 行使一切正常。
如何为 wpf 复制此代码?
private void Log(string text)
{
if (IsDisposed) return;
textBoxLog.AppendText(text);
textBoxLog.ScrollToLine(textBoxLog.LineCount - 1);
}
编辑:这与垃圾回收无关,因为如果处理表单,textBoxLog 将抛出 ObjectDisposedException。
它不是为了垃圾收集,这是因为如果表单被释放,如果你试图调用 AppendText
或 ScrollToLine
表单已被处理,日志在事后被调用。
WPF windows 和控件不像 winforms 那样是一次性的,但是如果你想重新创建行为,只需重写 OnClosed
方法并设置一个标志。
private bool _isClosed = false;
protected override void OnClosed(EventArgs e)
{
_isClosed = true;
base.OnClosed(e);
}
private void Log(string text)
{
if (_isClosed) return;
textBoxLog.AppendText(text);
textBoxLog.ScrollToLine(textBoxLog.LineCount - 1);
}
我正在为 tut 视频开发一个自定义键控程序,我正在使用 MouseKeyHook,我正在使用此处找到的示例代码:https://github.com/gmamaladze/globalmousekeyhook/blob/vNext/Demo/Main.cs 使基本构造正常工作。
由于该示例是为 win 表单设计的,所以我在一行中遇到了问题。我通过省略 - if (IsDisposed) return;
第 176 行使一切正常。
如何为 wpf 复制此代码?
private void Log(string text)
{
if (IsDisposed) return;
textBoxLog.AppendText(text);
textBoxLog.ScrollToLine(textBoxLog.LineCount - 1);
}
编辑:这与垃圾回收无关,因为如果处理表单,textBoxLog 将抛出 ObjectDisposedException。
它不是为了垃圾收集,这是因为如果表单被释放,如果你试图调用 AppendText
或 ScrollToLine
表单已被处理,日志在事后被调用。
WPF windows 和控件不像 winforms 那样是一次性的,但是如果你想重新创建行为,只需重写 OnClosed
方法并设置一个标志。
private bool _isClosed = false;
protected override void OnClosed(EventArgs e)
{
_isClosed = true;
base.OnClosed(e);
}
private void Log(string text)
{
if (_isClosed) return;
textBoxLog.AppendText(text);
textBoxLog.ScrollToLine(textBoxLog.LineCount - 1);
}