确定关闭正在关闭我的应用程序
.NET 中是否可以确定我的应用程序是否由于 Windows 收到关闭命令(而不是任何旧的应用程序关闭)而关闭,以便写出一些临时缓存文件,甚至阻止关闭足够长的时间以提示用户输入?
虽然我当前的范围涉及 Winform 应用程序和 Windows 服务,但如果可能的话,我有兴趣以通用方式理解这一点
Is it possible in .NET to ascertain whether my application is closing due to Windows being given a shutdown command (as opposed to any old application closing) in order to either write out some temporary cache files or even block the shutdown long enough to prompt for user input?
Whilst my current scope involves a Winform app and a windows service, I am interested in understanding this in a generic way if possible
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
SystemEvents.SessionEnding 看起来是一个很好的起点为你。 该文章讨论了发生注销/关闭时涉及的事件序列。
SystemEvents.SessionEnding looks like a good starting point for you. That article talks about the event sequence involved when a logout/shutdown is occurring.
一般来说,您需要处理
WM_QUERYENDSESSION
Windows 消息。 这将使您的应用程序有机会进行清理,或者在确实有必要时阻止关闭。In general, you will want to handle the
WM_QUERYENDSESSION
Windows message. This will give your application a chance to do cleanup, or to block the shutdown if it's really necessary.处理 Microsoft.Win32.SystemEvents 类型的 SessionEnded 事件。
Handle the SessionEnded event on the Microsoft.Win32.SystemEvents type.