我作为Windows服务运行的C#程序阻止Windows XP进入休眠状态

时间:2010-05-16 13:38:59

标签: c# .net windows-services hibernation

我用C#编写的Windows服务。它启动两个线程,一个是池化Web服务,第二个是在Monitor对象上等待新作业到达。除此之外,主线程使用NetNamedPipeBinding充当WCF服务主机。它允许客户端应用程序注册回调,然后发回通知。

我遇到的问题是,当这个Windows服务运行时,我无法在Windows XP,SP3上运行的计算机进行休眠或待机。当我将Windows设置为休眠或待机状态时,没有任何反应。然后,在我转到Service Manager并停止服务的那一刻,系统休眠立即开始。

扩展ServiceBase的服务类具有CanHandlePowerEvent,CanPauseAndContinue等属性设置为true ...这没有任何区别。

问题是:什么可以阻止休眠/待机进行?我应该注意什么,以避免它?

1 个答案:

答案 0 :(得分:5)

您只需提及将CanHandlePowerEvent属性设置为true。我假设如果状态为OnPowerEvent,您还必须处理true并返回QuerySuspend,并且可能会阻止您正在执行的操作,但我不知道详情这个。

此处有更多详情:

http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicebase.onpowerevent%28v=VS.80%29.aspx