Моя программа на C #, работающая как служба Windows, блокирует Windows XP от спящего режима - PullRequest
3 голосов
/ 16 мая 2010

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

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

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

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

1 Ответ

5 голосов
/ 16 мая 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...