я должен переопределить OnPowerEvent в службе Windows C #? - PullRequest
0 голосов
/ 06 октября 2018

У меня есть служба 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?

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