我有线程在做一些工作。当工作正在进行时,如果用户让系统休眠/挂起,我希望线程自行结束。我现在面临的问题是,当我从 sleep 中恢复时,线程还没有结束,我的应用程序挂起了。我是否必须让事件处理程序来处理这个问题?如果是,如何处理?
我的线程是在 UI(C#) 中创建的。 sleep /挂起在 C++ 代码中处理。
最佳答案
您可以使用 Windows Power Management Events检测系统何时休眠并使用react。
要使用它们,您需要覆盖 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
关于c# - 当系统进入休眠/挂起 C# 时结束线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12101820/