Что такое ServiceBase.ServiceHandle?Есть примеры? - PullRequest
3 голосов
/ 06 мая 2011

Я работаю в службе, которая следит за файловой системой на предмет изменения / добавления / удаления чего-либо внутри папки.Когда я начал его реализовывать, я встретил это свойство внутри класса ServiceBase, ServiceBase.ServiceHandle.
Для чего это используется?Что я могу достичь с этим?Я попытался поискать в Google по этому поводу, но обнаружил немного больше, чем сказал мне сайт MSDN.
Кто-нибудь знает какой-нибудь пример или учебное пособие по его использованию?

1 Ответ

4 голосов
/ 07 мая 2011

ServiceBase.ServiceHandle - системный дескриптор, используемый для обновления статуса службы в панели управления службами. Это тот же дескриптор, который возвращается функциями Win32 RegisterServiceCtrlHandler и RegisterServiceCtrlHandlerEx.

Все службы несут ответственность за обновление своего статуса. В неуправляемых сервисах, таких как созданные в C ++, ответственность за это несла разработчик. Вы передадите дескриптор и обновленный статус (например, START_PENDING, RUNNING, STOPPED) в качестве входных данных для функции Win32 SetServiceStatus при изменении состояния.

Даже в управляемых службах, таких как созданные с помощью C #, разработчик по-прежнему несет ответственность за обновление статуса; просто класс ServiceBase выполняет все обновления статуса для вас.

Короче говоря, я бы сказал, что этот дескриптор совершенно не нужен для управляемых сервисов, которые наследуются от ServiceBase.

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