如果视图模型引用非托管资源或具有事件处理程序(例如调度程序计时器上的处理已过去),如何确保视图模型得到正确处理。在第一种情况下,终结器是一种选择,虽然并不理想,但在后者中,它永远不会被调用。我们如何判断何时不再有视图附加到视图模型。
我通过执行以下操作来完成此操作:
- 从 App.xaml 中删除 StartupUri 属性。
-
定义我的 App 类如下:
public partial class App : Application
{
public App()
{
IDisposable disposableViewModel = null;
//Create and show window while storing datacontext
this.Startup += (sender, args) =>
{
MainWindow = new MainWindow();
disposableViewModel = MainWindow.DataContext as IDisposable;
MainWindow.Show();
};
//Dispose on unhandled exception
this.DispatcherUnhandledException += (sender, args) =>
{
if (disposableViewModel != null) disposableViewModel.Dispose();
};
//Dispose on exit
this.Exit += (sender, args) =>
{
if (disposableViewModel != null) disposableViewModel.Dispose();
};
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)