2012-02-27 44 views
0

在我的WPF应用程序中,我使用SessionEnding事件来防止应用程序需要保存数据时关闭Windows。它的工作原理,但我不知道如何告诉Windows,我不需要阻止其关闭了。我有一个布尔变量,告诉节能是否正在发生。如果我阻止SessionEnding中的关闭,如何在结束时关闭我的应用程序?我不想在保存结束时关闭应用程序因为我不知道用户是否已取消关机。请帮忙。告诉Windows我不需要在WPF应用程序中阻止其关闭

+2

您的数据保存需要多长时间?如果速度很快,您可以保存响应,然后允许关机继续。否则,如果您阻止关机,用户需要再次手动关机。 – dlev 2012-02-27 20:41:37

回答

1

关闭Windows时只等待您的应用程序关闭。一旦您的应用程序保存了数据,请确保关闭它,Windows会检测到该数据继续关闭。

+0

好的,但是如果我在保存后关闭我的应用程序,但用户已取消关机,该怎么办?我希望我的应用程序不要关闭。如何在用户等待我的应用程序关闭时通知我取消关机。 – jozefkarton 2012-02-27 21:03:14

+0

未测试,但检查此属性:Environment.HasShutdownStarted – NestorArturo 2012-02-27 21:39:46

+0

@jozefkarton我不认为有一个纯粹的WPF方式来检测这种情况。您可能能够从覆盖WndProc中获取某些内容,并以棘手的方式处理WM_QUERYENDSESSION和WM_ENDSESSION。我的建议是,当你的应用由于系统关闭而关闭时,你并不需要从用户按下“取消关机”的场景中恢复。我认为,即使在关机期间关闭了几个应用程序(包括您的应用程序),即使他们在某个时间点按下了取消,用户也不会感到惊讶。 – 2012-02-27 21:54:43

相关问题