在 .NET 中是否可以确定我的应用程序是否由于 Windows 被关闭命令(而不是任何旧的应用程序关闭)而关闭,以便写出一些临时缓存文件甚至阻止关闭足够长的时间以提示用户输入?
虽然我目前的范围涉及 Winform 应用程序和 Windows 服务,但如果可能,我有兴趣以通用方式理解这一点
SystemEvents.SessionEnding对您来说是一个很好的起点。那篇文章讨论了发生注销/关闭时所涉及的事件序列。
通常,您需要处理WM_QUERYENDSESSION
Windows 消息。这将使您的应用程序有机会进行清理,或者在确实需要时阻止关闭。
处理 Microsoft.Win32.SystemEvents 类型上的 SessionEnded 事件。