服務一般都能正常的運行,但有時候也會有一些假死現象,比如公司有一考勤服務就因為依賴於硬件廠家的api,
但廠家api運行一段時間后會默名的假死,引起整個服務假死,因為這一假死現象具有不確定性,所以不太可能
看到假死后手動去進行啟動。
目前本人知道的有兩種方法解決這種情況:
1.寫另一個服務,對此當前服務進行監聽【需要一些共同數據來判斷是否為假死】,一但發現假死,進行重新啟動
2.利用服務本身進行重啟。
a.打開 控制面板-》管理工具-》服務,找到需要自動重啟服務,點擊右鍵-》屬性,點擊 恢復 選項卡, 將 ”第一次失敗(F)",”第二次失敗(S)",”后續失敗(U)"都設定為"重新啟動服務",點擊確定,如圖:
b.服務程序中開一線程,進行假死判斷, 一旦發現假死,執行 Environment.Exit(1); 這樣服務在退出后會重新進行啟動
注:此方法前提條件是判斷假死的線程還能正常運行。