c# - 当系统进入休眠/挂起 C# 时结束线程

标签 c# multithreading event-handling

我有线程在做一些工作。当工作正在进行时,如果用户让系统休眠/挂起,我希望线程自行结束。我现在面临的问题是,当我从 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/

相关文章:

multithreading - delphi中的线程初始化和清理

python - 使用 Tkinter 在 Matplotlib 中获取鼠标单击的位置

multithreading - 具有单例的 Realm 线程安全对象

c++ - 为什么 std::thread 缺少基本功能?

objective-c - 检测 iPhone 同步的事件

spring - 如何使用 Spring EventListener 进行 sendAndReceive ?

c# - 在 .NET 的 *.a 库中使用 C 函数

c# - 如何在 WinForms 中将字典绑定(bind)到列表框

Javascript Geolocation 纬度和经度变量在 asp.net 中的访问

c# - ASP.Net Core Web API 基于约定的路由?