起初我想跟所有用户打招呼。我是.NET编程的新手。我有Microsoft.Win32.PowerModeChangedEventArgs类的问题。我的应用程序应该检测系统是否进入睡眠状态以及系统何时从睡眠状态恢复。
Sub main()
If count = 0 Then
If close = False Then
firstrun()
End If
Dim start As New Thread(AddressOf specials)
start.Start()
Dim watch As New Thread(AddressOf watchdog)
watch.Start()
If close = True Then
start.Abort()
watch.Abort()
End If
End If
Do Until close = True
Thread.Sleep(20)
'do something
Loop
RemoveHandler Microsoft.Win32.SystemEvents.PowerModeChanged, AddressOf PowerModeChange
RemoveHandler Microsoft.Win32.SystemEvents.SessionEnding, AddressOf SessionEnding
Application.Exit()
End
End Sub
Sub PowerModeChange(ByVal sender As System.Object, ByVal e As Microsoft.Win32.PowerModeChangedEventArgs)
Select Case e.Mode
Case Microsoft.Win32.PowerModes.Suspend And sus = False
sus = True
res = False
status = "System suspended "
count = 0
firstrun()
Case Microsoft.Win32.PowerModes.StatusChange And res = False
res = True
sus = False
status = "System resumed "
count = 0
firstrun()
End Select
End Sub
Sub watchdog()
AddHandler Microsoft.Win32.SystemEvents.PowerModeChanged, AddressOf PowerModeChange
AddHandler Microsoft.Win32.SystemEvents.SessionEnding, AddressOf SessionEnding
End Sub
这是我的代码的一小部分。不幸的是,在Visual Studio 2010中进行调试时,代码工作正常。但是当编译并作为独立的exe运行时,不会检测到电源状态。正如你所看到的,我试图在另一个线程中添加句柄,也尝试循环该线程但没有成功。我的应用程序是在后台运行的一种服务。也许你可以帮助初学者程序员。谢谢你提前。
答案 0 :(得分:1)
谢谢大家的回复。这个解决方案有助于现在应用程序完美运行。非常感谢你。
<MTAThread()> _
Sub Main()
'doing something
End Sub