我有线程做一些工作。虽然工作正在进行中,并且如果用户使系统进入休眠/暂停状态,我希望线程自己结束。我现在面临的问题是,当我从睡眠状态恢复时,线程没有结束,我的应用程序挂起。我是否必须使用eventhandler来处理这个问题,如果是的话怎么做?
我的线程是在UI(C#)中创建的。睡眠/暂停是用C ++代码处理的。
答案 0 :(得分:3)
您可以使用Windows Power Management Events来检测系统何时进入睡眠状态并做出反应。
要使用它们,您可以覆盖WndProc并侦听WM_POWERBROADCAST事件
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WM_POWERBROADCAST:
...
}
}
这里有一个非常好的概述和详细的例子:
http://www.codeproject.com/Articles/192084/Responding-to-Windows-power-management-events-stan