Windows サービスとして実装されている「ウォッチドッグ」と通信する C# (XP 組み込みで実行されている 2.0) のアプリケーションがあります。デバイスが起動すると、通常、このサービスが開始されるまでに時間がかかります。サービスが実行されているかどうか、コードから確認したいと思います。どうすればこれを達成できますか?
188564 次
2 に答える
396
私はこのようなものがうまくいくと思います:
プロジェクト参照に追加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()
最初に電話する必要があります。
参照: .NET のServiceControllerオブジェクト。
于 2008-10-07T12:10:39.240 に答える
19
ここでは、ローカル マシンで利用可能なすべてのサービスとそのステータスを取得します。
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
于 2014-06-24T07:48:58.367 に答える