等同于使用 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。

它不是为了垃圾收集,这是因为如果表单被释放,如果你试图调用 AppendTextScrollToLine表单已被处理,日志在事后被调用。

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);
}