我有一个WinForms应用程序,可以在系统进入暂停状态(睡眠)和恢复时跟踪.App将SystemEvents此类用于此目的.它在我的机器上工作正常.但是,对于某些用户来说,似乎PowerModes.Resume并不总是提出事件.应用程序接收多个,其间PowerModes.Suspend没有任何PowerModes.Resume奇怪的.
我的主要问题是如何可能发生这种情况以及如何避免它并使恢复检测可靠?
代码非常简单,基本上遵循(非常简短):
Imports Microsoft.Win32
Friend Class TehClass
Implements IDisposable
Private Sub New()
AddHandler SystemEvents.PowerModeChanged, AddressOf Me.System_PowerModeChanged
End Sub
Private Sub System_PowerModeChanged(sender As Object, args As PowerModeChangedEventArgs)
Log.Info("Power mode changed: {0}.", args.Mode)
End Sub
#Region "IDisposable Support"
' just dropping handler there
#End Region
End Class
Run Code Online (Sandbox Code Playgroud)
应用程序中始终存在一个现有表单.但是,它可以在通知区域中最小化或隐藏.还有一些参考实际的实例TehClass.
这是示例日志:
[2015-09-15 22:38:38,501] Power mode changed: Suspend.
[2015-09-16 07:10:31,106] Power mode changed: Resume.
[2015-09-16 08:54:21,112] Power mode changed: Suspend.
[2015-09-16 09:14:36,252] Power mode …Run Code Online (Sandbox Code Playgroud)