Как я могу проверить, работает ли служба Windows
У меня есть приложение на C# (2.0 работает на XP embedded), которое взаимодействует с "сторожевым псом", который реализован как служба Windows. Когда устройство загружается, эта служба обычно занимает некоторое время для запуска. Я хотел бы проверить, из моего кода, если служба запущена. Как я могу это сделать?
3 ответа:
Я думаю, что-то вроде этого будет работать:
добавить
System.ServiceProcess
к вашим ссылкам на проект (это на вкладке .NET).using System.ServiceProcess; ServiceController sc = new ServiceController(SERVICENAME); switch (sc.Status) { case ServiceControllerStatus.Running: return "Running"; case ServiceControllerStatus.Stopped: return "Stopped"; case ServiceControllerStatus.Paused: return "Paused"; case ServiceControllerStatus.StopPending: return "Stopping"; case ServiceControllerStatus.StartPending: return "Starting"; default: return "Status Changing"; }
Edit: существует также метод
sc.WaitforStatus()
который принимает желаемый статус и тайм-аут, никогда не использовал его, но он может удовлетворить ваши потребности.Edit: как только вы получите статус, чтобы получить статус снова вам нужно будет позвонить
sc.Refresh()
первый.ссылки: ServiceController объект в. NET.
пожалуйста, взгляните на ServiceController объект в. NET.
здесь вы получаете все доступные службы и их статус на вашем локальном компьютере.
ServiceController[] services = ServiceController.GetServices(); foreach(ServiceController service in services) { Console.WriteLine(service.ServiceName+"=="+ service.Status); }
вы можете сравнить свой сервис с service.name свойство внутри цикла, и вы получите статус вашего сервиса. Для деталей пойдите с http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicecontroller.aspx также http://msdn.microsoft.com/en-us/library/microsoft.windows.design.servicemanager(v=vs. 90).aspx