Windows サービスを思い通りに再起動する方法を知りたいです。
私はこの解決策を持っています:
private const int RestartTimeout = 60000; // 1 minute
public void Control(string serviceName)
{
service = new ServiceController(serviceName);
}
public bool RestartService()
{
try
{
Control("MyService");
service.Refresh();
if (service.Status != ServiceControllerStatus.Stopped)
{
mytimer.Enabled = false;
service.Stop();
int i = 0;
service.Refresh();
while (service.Status == ServiceControllerStatus.Stopped || service.Status == ServiceControllerStatus.StopPending)
{
i++;
Thread.Sleep(100);
if (i >= RestartTimeout / 100)
{
return false;
}
}
service.Start();
return true;
}
service.Start();
return true;
}
catch (Exception ex)
{
return false;
}
}
while ループに到達した時点でタイムアウト エラーが発生しました。サービスが停止されたからでしょうか?
ここで実際に達成しようとしているのは、サービスを停止し、サービスを再開する前に 1 分間スリープすることです。
助けてください。ありがとう!