我正在开发一个针对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。
答案 0 :(得分:1)
这不是垃圾收集,因为如果表单被处理textBoxLog
,如果您尝试在表单后调用ObjectDisposedException
或AppendText
,则会抛出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);
}