系统重新启动时未调用Application.Exit事件



我有一个WPF应用程序,每次应用程序退出时都需要保存其当前状态。目前,我正在处理System.Windows.Application.Exit事件以保存应用程序的状态。然而,该事件似乎不会被调用系统重新启动,而只是普通的关闭。这是预期的行为吗?

这就是我的应用程序的样子。

public class MyApp : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
...
this.Exit += OnExit;
}
private void OnExit(object sender, ExitEventArgs e)
{
SaveMyApplicationState();
}
}

我可以使用哪些事件来获得系统重新启动的通知,以便保存我的应用程序状态?

要确定系统何时重新启动或关闭,请使用SessionEnding事件:

App.xaml

<Application ...
SessionEnding="App_SessionEnding">
...
</Application>

App.xaml.cs

public partial class App : Application
{
void App_SessionEnding(object sender, SessionEndingCancelEventArgs e)
{
if (.../*canceling*/)
{
e.Cancel = true;
}
else
{ 
// Processing before terminating (save current state)
// ...               
}
}
}

有关详细信息,请参阅文档:Application.SessionEnding Event

注意:Windows Vista 中的应用程序关闭更改

最新更新