系统进入休眠/暂停C#时结束线程

时间:2012-08-24 00:31:16

标签: c# multithreading event-handling

我有线程做一些工作。虽然工作正在进行中,并且如果用户使系统进入休眠/暂停状态,我希望线程自己结束。我现在面临的问题是,当我从睡眠状态恢复时,线程没有结束,我的应用程序挂起。我是否必须使用eventhandler来处理这个问题,如果是的话怎么做?

我的线程是在UI(C#)中创建的。睡眠/暂停是用C ++代码处理的。

1 个答案:

答案 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