我有线程在做一些工作。当工作正在进行时,如果用户让系统进入睡眠/挂起状态,我希望线程自行结束。我现在面临的问题是,当我从睡眠中恢复时,线程还没有结束,我的应用程序挂起。我是否必须让事件处理程序来处理这个问题,如果是的话怎么办?
我的线程是在 UI(C#) 中创建的。睡眠/挂起在 C++ 代码中处理。
我有线程在做一些工作。当工作正在进行时,如果用户让系统进入睡眠/挂起状态,我希望线程自行结束。我现在面临的问题是,当我从睡眠中恢复时,线程还没有结束,我的应用程序挂起。我是否必须让事件处理程序来处理这个问题,如果是的话怎么办?
我的线程是在 UI(C#) 中创建的。睡眠/挂起在 C++ 代码中处理。
您可以使用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