相当于使用c#wpf进行IsDisposed

时间:2016-09-05 16:21:17

标签: c# .net wpf mousekeyhook

我正在开发一个针对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。

1 个答案:

答案 0 :(得分:1)

这不是垃圾收集,因为如果表单被处理textBoxLog,如果您尝试在表单后调用ObjectDisposedExceptionAppendText,则会抛出ScrollToLine处置后,Log会被调用。

WPF窗口和控件不像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);
}