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

she*_*rpa 3 .net c# windows-services hibernation

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

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

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

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

Han*_*son 5

您只提到将CanHandlePowerEvent属性设置为true.我假设你还必须处理OnPowerEvent并返回true状态,QuerySuspend并且也可能阻止你正在做的任何事情,虽然我不知道这个的细节.

更多细节在这里:

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