У меня есть служба Windows, у которой открыто соединение с веб-сокетом [Socketcluster] и она отвечает на сообщения через него.Он показывает уведомление в системном трее, когда он подключается к серверу через веб-сокет, а также когда он отключен.
Служба приостановлена на компьютере, который переходит в спящий режим, что является нормальным.Однако мне нужно выяснить, активируется ли сервис снова сразу после выхода из спящего режима, или он активируется только после успешного входа пользователя в систему после его возобновления.Под активированным я имею в виду начинает реагировать на события сокета.Мне не нужна ситуация, когда компьютер не спит [он возобновил], но вход в систему находится в режиме ожидания, а служба не прослушивает события.
Если я заставлю компьютер перейти в режим сна, а затем возобновить работу снова, он не показывает мне уведомление о том, что он онлайн.Тем не менее, я вижу, что он подключен к сети по значку на панели задач.
Если, однако, я добавлю переопределение метода OnPowerEvent следующим образом, то я получаю уведомление о том, что служба подключена после входа в систему.
protected override bool OnPowerEvent(PowerBroadcastStatus powerStatus)
{
if (powerStatus.HasFlag(PowerBroadcastStatus.QuerySuspend))
{
logger.Info("OnPowerEvent:Suspend");
//Disconnect the socket
pluginHost.StopListeners();
}
if (powerStatus.HasFlag(PowerBroadcastStatus.ResumeSuspend))
{
logger.Info("OnPowerEvent:Resume");
//Reconnect the socket
pluginHost.StartListeners();
}
return base.OnPowerEvent(powerStatus);
}
Итак, вопрос в том, должен ли я переопределить OnPowerEvent в службе Windows?