Я думаю, что-то вроде этого будет работать:
Добавьте 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";
}
Изменить: Существует также метод sc.WaitforStatus()
, который принимает желаемый статус и время ожидания, никогда не использовал его, но он может удовлетворить ваши потребности.
Редактировать: Как только вы получите статус, чтобы получить статус снова, вам нужно сначала позвонить sc.Refresh()
.
Ссылка: ServiceController объект в .NET.