我有一个 WPF 应用程序的代码如下:
public class MyTextBox : System.Windows.Controls.TextBox, IDisposable
{
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
Dispatcher.BeginInvoke((Action) delegate
{
// do work on member variables on the UI thread.
});
}
~MyTextBox()
{
Dispose(false);
}
}
dispose方法从未被显式调用,因此析构函数会调用它。在这种情况下,似乎对象将在BeginInvoke委托在UI线程上触发之前被销毁。尽管如此,它似乎仍然有效。这里发生了什么?这是安全的吗?