C# Windows服务OnPowerEvent

C# Windows服务OnPowerEvent,c#,windows,service,sleep,suspend,C#,Windows,Service,Sleep,Suspend,我正在尝试实现一个windows服务,该服务在系统进入待机模式(睡眠)时发送消息。我的测试机操作系统是Windows8 pro。该服务已覆盖CanHandlePowerEvents=true和OnPowerEvent,并且确实接收电源事件 我遇到的问题是:OnPowerEvent从未收到QuerySuspend消息。然而,在计算机进入挂起之前,它确实接收到挂起消息,但操作系统并不等待OnPowerEvent方法完成,它只是进入挂起模式,然后在恢复之后,OnPowerEvent方法继续执行 通过互

我正在尝试实现一个windows服务,该服务在系统进入待机模式(睡眠)时发送消息。我的测试机操作系统是Windows8 pro。该服务已覆盖CanHandlePowerEvents=true和OnPowerEvent,并且确实接收电源事件

我遇到的问题是:OnPowerEvent从未收到QuerySuspend消息。然而,在计算机进入挂起之前,它确实接收到挂起消息,但操作系统并不等待OnPowerEvent方法完成,它只是进入挂起模式,然后在恢复之后,OnPowerEvent方法继续执行

通过互联网发送消息可能需要1-2秒,所以它总是在计算机恢复后发送,而不是在进入暂停模式之前发送,因为它应该工作


任何人都知道如何解决这个问题吗?

在Vista和更高版本中,应用程序有两秒钟的时间来完成PBT_APMSUSPEND事件触发的任何操作。此设置不可配置

当应用程序收到系统即将进入睡眠的通知时,它应该快速执行任何必要的操作并返回消息循环。在超时前处理此消息时,系统允许每个应用程序最多两秒钟


OnPowerEvent以异步方式运行。无论如何,您都无法延迟关机。如果你不去考虑这个想法,你就不能把它变成现实。