Моя программа на C#, работающая в качестве службы Windows, блокирует Windows XP от спящего режима

У меня есть служба Windows, написанная на C#. Он запускает два потока, один из которых объединяет в пул веб-службу, второй ожидает на объекте Monitor поступления нового задания. Кроме того, основной поток выступает в качестве хоста службы WCF, используя NetNamedPipeBinding, Это позволяет клиентскому приложению зарегистрировать обратный вызов, а затем отправляет уведомления обратно.

Проблема у меня заключается в том, что, когда эта служба Windows работает, я не могу перевести компьютер в ждущий или ждущий режим, работающий под управлением Windows XP, SP3. Когда я устанавливаю Windows в спящий или ждущий режим, ничего не происходит. Затем, в тот момент, когда я захожу в Service Manager и останавливаю службу, системный спящий режим запускается немедленно.

Класс обслуживания, расширяющий ServiceBase имеет такие свойства, как CanHandlePowerEvent, CanPauseAndContinue и т. д., имеющие значение true... Это не имеет никакого значения.

Вопрос в том, что может блокировать переход в спящий режим / режим ожидания. Что я должен заботиться, чтобы избежать этого?

1 ответ

Решение

Вы только упоминаете, что вы установили CanHandlePowerEvent свойство к истине. Я предполагаю, что вам также придется справиться с OnPowerEvent и вернуться true если статус QuerySuspend а также, вероятно, прекратить все, что вы делаете, хотя я не знаю деталей этого.

Подробнее здесь:

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

Другие вопросы по тегам