And*_*gar 49 .net c# windows winforms system-shutdown
我需要检测Windows何时关闭(或重新启动)或用户何时注销.我需要在应用程序关闭之前正确关闭应用程序.我注意到Windows关闭时没有出现退出应用程序事件.
我看了帖子c#中是否有办法检测Windows关机/注销并取消该操作(询问用户后)
但我不确定在关闭前我应该在哪里执行操作.谢谢.
Cod*_*ray 60
将事件处理程序方法附加到SystemEvents.SessionEnding事件,每次引发事件时都会调用处理程序方法.如果您愿意,处理此事件将允许您取消挂起注销或关闭.(虽然这在当前的操作系统中实际上并不像它听起来那样;有关更多信息,请参阅此处的MSDN文档.)
如果您不想取消该事件,只是恰当地对其做出反应,则应该处理该SystemEvents.SessionEnded事件.
但是,必须确保在应用程序关闭时分离事件处理程序,因为这两者都是静态事件.
c00*_*0fd 11
如果您的代码未在非交互式会话(例如系统服务)中运行,则可以通过pinvoke使用本机解决方案:
//SM_SHUTTINGDOWN = 0x2000
bool bShutDownPending = GetSystemMetrics(SM_SHUTTINGDOWN) != 0;
Run Code Online (Sandbox Code Playgroud)