3

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

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

4

1 回答 1

3

您可以使用Windows 电源管理事件来检测系统何时进入睡眠状态并做出反应。

要使用它们,您需要覆盖 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

于 2012-08-24T16:52:28.173 回答