今天突然发现之前写的程序在窗口关闭之后,进程并没有结束,盘查了一下才发现是设置了ShutdownMode,ShutdownMode属性用于控制应用程序何时终止。属性的可选值为OnLastWindowClose、OnMainWindowClose和OnExplicitShutdown。
当ShutdownMode设置为OnExplicitShutdown时,应用程序不会在窗口关闭时自动终止,而是需要显式调用Application.Current.Shutdown()
方法来手动终止应用程序。
private void MetroWindow_Closed(object sender, EventArgs e)
{
//结束程序进程
Application.Current.Shutdown();
}
当调用Application.Current.Shutdown()
时,WPF应用程序的进程会正常结束,并且应用程序的所有资源会被释放。换句话说,进程会在调用Shutdown()
方法后完全结束,不会保留任何后台进程或资源。
所以,使用ShutdownMode设置为OnExplicitShutdown并调用Application.Current.Shutdown()
方法后,应用程序的进程会正常结束,不会有残留进程或资源。