My devbox - это компьютер под управлением Windows 7 (x64). У меня есть некоторый код (C #, .net 2.0), который при определенных обстоятельствах проверяет, работает ли служба, а затем останавливает ее.
ServiceController matchedService = //My Service!
//If statements and such
matchedService.Stop();
matchedService.WaitForStatus(ServiceControllerStatus.Stopped);
Теперь я могу убедиться, что MyService действительно установлен и работает. Я могу сказать вам, что я выполняю Visual Studio 2008 как администратор во время отладки. Я также могу убедиться, что после пары If операторов я попаду в части программирования .Stop () и .WaitForStatus (). Я действительно знаю, что если перешагнуть вызов .Stop (), сама служба просто продолжит работу (глядя на нее в Services , хотя мне кажется, что мне следует воспользоваться более подходящим инструментом для этого. я уверен, что есть какой-то инструмент sysinternals, который может дать мне больше информации). Когда я перехожу вызов .WaitForStatus (), я в основном ожидаю остановленного состояния. , , навсегда. Хорошо, я оставил это там более 15 минут вчера (дважды), и ничего не происходит. Мы никогда не доберемся до следующей строки кода. Это похоже на странную странность Боуи (вы знаете ту часть, о которой я говорю).
В MyService есть много вещей, о которых вы ничего не знаете. Вещи, которые вы не поймете. Вещи, которые вы не могли. , , позвольте мне прямо заявить об этом. Ни один сервис не зависит от MyService, а MyService не зависит от других сервисов. Addendum MyOtherService и SonOfMyService, похоже, работают правильно в этой точке кода. Все эти сервисы имеют одинаковые характеристики (это наши собственные сервисы, которые мы создали в секретной лаборатории и не имеют никаких зависимостей). Возможно, что-то не так с установкой MyService или что-то в этом роде?
Я знаю, что если я прекратить отладку на этом этапе, MyService по-прежнему будет отображаться как работающий в Службах (даже после нажатия кнопки «Обновить»). Если я попытаюсь перезапустить его (или снова запустить мое приложение и добраться до этой точки), я получаю сообщение о том, что оно не может принимать управляющие сообщения. После этого служба отображается как остановленная, и я могу запустить ее как обычно.
Почему служба не останавливается? Это причуда победы 7? С моей стороны невозможно понять ServiceController или Win Services в целом?