我有此代碼重新啓動服務,但這不起作用。無法重新啓動服務
我可以單獨啓動和停止,但不會重新啓動,這涉及我首先停止並啓動服務。
try
{
//service.Stop();
//service.Start();
int millisec1 = Environment.TickCount;
TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);
service.Stop();
service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
// count the rest of the timeout
int millisec2 = Environment.TickCount;
timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds - (millisec2 - millisec1));
service.Start();
service.WaitForStatus(ServiceControllerStatus.Running, timeout);
}
catch
{
// ...
}
它只是在catch部分。
我不知道我錯在哪裏。
有什麼建議。
UPDATE:
所以我把這個想法從下面的正確答案:
這是需要做>
public static void RestartService(string serviceName, int timeoutMilliseconds)
{
ServiceController service = new ServiceController(serviceName);
int millisec1 = Environment.TickCount;
TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);
if (!(service.Status.Equals(ServiceControllerStatus.Stopped) || service.Status.Equals(ServiceControllerStatus.StopPending)))
{
service.Stop();
service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
}
// count the rest of the timeout
int millisec2 = Environment.TickCount;
timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds - (millisec2 - millisec1));
if (!(service.Status.Equals(ServiceControllerStatus.Running) || service.Status.Equals(ServiceControllerStatus.StartPending)))
{
service.Start();
service.WaitForStatus(ServiceControllerStatus.Running, timeout);
}
}
變化'catch'到'趕上(異常前)'和異常保存到一個日誌文件或Windows事件日誌。然後請發佈該例外的文本,我們將能夠排除實際發生錯誤的問題。就目前而言,唯一可以提出的建議是「發生例外。」 – 2010-07-22 14:38:02
也許你應該閱讀引發的異常,而不是壓制它。可能是一個幫助。 ; o) – DHN 2010-07-22 14:38:15
你看到什麼異常?您應該捕獲一些異常,以便您可以獲取並記錄消息。 – 2010-07-22 14:38:19