我在C#中有一個Windows服務。運行1-2天后(不是特定的),服務停止(它實際上不停止,但它沒有處理任何東西,服務狀態仍然是「開始」,我需要手動重啓服務,然後再次運行)。「外部組件引發異常」
記錄的異常是「外部組件已引發異常」。這發生在第三方控制中。
我想要的服務,持續,沒有任何停頓,在生產中沒有一個是要檢查服務是否是最新/處理或沒有,除非特定功能停止。
我有所有TRY..CATCH到位。
任何建議,即使發生上述錯誤,我如何確保服務仍在繼續?
我在C#中有一個Windows服務。運行1-2天后(不是特定的),服務停止(它實際上不停止,但它沒有處理任何東西,服務狀態仍然是「開始」,我需要手動重啓服務,然後再次運行)。「外部組件引發異常」
記錄的異常是「外部組件已引發異常」。這發生在第三方控制中。
我想要的服務,持續,沒有任何停頓,在生產中沒有一個是要檢查服務是否是最新/處理或沒有,除非特定功能停止。
我有所有TRY..CATCH到位。
任何建議,即使發生上述錯誤,我如何確保服務仍在繼續?
改爲使用此try-catch結構。如果RestartService失敗,你可以停止你的服務一起
public static void RestartService(string serviceName, int timeoutMilliseconds)
{
ServiceController service = new ServiceController(serviceName);
try
{
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
{
// ...
}
}
:
try{
}catch{
}
http://www.java2s.com/Code/CSharp/Language-Basics/Usethecatchallcatchstatement.htm
感謝您的回覆..但我已經在帖子中提到try..catch已經到位...有什麼更好的建議? – SAM 2013-04-25 08:06:32
你可能想嘗試做這樣的事情在你的catch塊。代碼示例here
首先,記錄整個異常。記錄'ex.ToString()',而不僅僅是'ex.Message'。幾乎肯定有一個內在的例外,告訴你究竟發生了什麼,以及在哪裏。 – 2013-10-18 20:00:05