Эквивалентно IsDisposed с использованием C# wpf
Я работаю над настраиваемой программой передачи ключей для видео-роликов и использую MouseKeyHook и использую приведенный здесь пример кода: https://github.com/gmamaladze/globalmousekeyhook/blob/vNext/Demo/Main.cs чтобы получить основные строительные работы.
Поскольку пример был предназначен для выигрышных форм, у меня возникли проблемы с одной линией в частности. Я заставил все работать, опуская - if (IsDisposed) return;
строка 176
Как мне скопировать этот код для wpf?
private void Log(string text)
{
if (IsDisposed) return;
textBoxLog.AppendText(text);
textBoxLog.ScrollToLine(textBoxLog.LineCount - 1);
}
РЕДАКТИРОВАТЬ: Это не было связано с сборкой мусора, это потому, что если форма удаляется, textBoxLog вызовет исключение ObjectDisposedException.
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);
}