如何檢測我的.NET應用程序崩潰,然後重新啓動?檢測並重新啓動崩潰的.NET應用程序
回答
另一種解決方案(基於this example)是創建控制應用程序的啓動:
class LauncherProgram
{
static int count = 3;
static void Main()
{
Launch();
Thread.Sleep(Timeout.Infinite);
}
static void Launch()
{
Process process = new Process();
process.StartInfo.FileName = "MyApp.exe";
process.EnableRaisingEvents = true;
process.Exited += LaunchIfCrashed;
}
static void LaunchIfCrashed(object o, EventArgs e)
{
Process process = (Process) o;
if (process.ExitCode != 0)
{
if (count-- > 0) // restart at max count times
Launch();
else
Environment.Exit(process.ExitCode);
}
else
{
Environment.Exit(0);
}
}
唯一可能的升級方法是將「看門狗」設置爲Windows服務。 – 2009-02-08 15:02:10
更好地添加一些時間戳代碼並檢測應用程序是否在啓動時崩潰 – Sean 2014-08-06 01:45:39
一個可能的解決方案是創建另一個進程監視應用程序,並重新啓動它,如果它被終止:
class ProcessMonitorProgram
{
const string myProcess = "MyApp.exe";
static void Main()
{
new Timer(CheckProcess, null, 0, 60 * 1000);
Thread.Sleep(Timeout.Infinite);
}
static void CheckProcess(object obj)
{
if (Process.GetProcessesByName(myProcess).Length == 0)
Process.Start(myProcess);
}
}
一個與此解決方案的問題是,它會保持進程重啓永遠,直到這個監控應用程序本身被終止。
- 運行一個AppDomain內的工作;使用主AppDomain來監視它(雖然不防止進程kill)
- 大量的異常處理!即不要讓一個致命的錯誤推倒過程
- 在一些已經有內置的循環來看,這 - IIS例如
如果這是一個Windows窗體應用程序:
- 套裝jitDebugging = true in App.Config。這可以防止內置的Windows窗體未處理的異常處理程序被觸發。
現在無論這是一個Windows窗體應用程序或一個控制檯應用程序:
註冊爲Application.ThreadException事件,例如在C#中:
Application.ThreadException + = new Threading.ThreadExceptionHandler(CatchFatalException);
此時,您的應用程序已進入黑洞。接下來會發生什麼取決於這是否是一個Windows窗體應用程序:如果它是一個Windows窗體應用程序
- ,請致電您的CatchFatalException事件處理Application.Restart方法。
- 否則,您將需要p /調用application restart and recovery本地函數。該鏈接討論Vista,但在我的測試中,它在XP上的工作情況也很好。
- 1. 檢測應用程序崩潰並重新啓動它的最佳方法?
- 2. 重新啓動代理程序崩潰
- 3. 應用程序在重新啓動活動時崩潰
- 4. 應用程序在手動kill後重新啓動時崩潰
- 5. 以編程方式重新啓動應用程序崩潰
- 6. 啓動時檢測應用程序崩潰
- 7. 應用程序在手機的重新啓動時崩潰
- 8. 如何在崩潰後重新啓動qt應用程序?
- 9. Android應用程序崩潰時重新啓動
- 10. Web應用程序重新啓動jni崩潰?
- 11. 在崩潰時重新啓動應用程序
- 12. 崩潰後重新啓動ASP.NET核心應用程序
- 13. 應用程序重新啓動太快時崩潰
- 14. Android應用程序崩潰後重新啓動
- 15. Android應用程序在重新啓動前崩潰
- 16. 當它崩潰時重新啓動Silverlight應用程序?
- 17. 快速退出時應用程序崩潰+重新啓動
- 18. Android:應用程序崩潰應用程序重新啓動Facebook登錄
- 19. 上的EditText場崩潰雙擊並重新啓動應用程序
- 20. 監視程序並在崩潰時重新啓動它
- 21. 應用程序在啓動後崩潰
- 22. WPF啓動時應用程序崩潰
- 23. 應用程序在啓動時崩潰。
- 24. AIR應用程序 - 啓動崩潰
- 25. 應用程序在啓動時崩潰
- 26. 當啓動應用程序時崩潰
- 27. 啓動時應用程序崩潰(iOS)
- 28. 應用程序在啓動時崩潰
- 29. Android應用程序啓動時崩潰
- 30. 啓動時應用程序崩潰
我發現這個問題的一些解決方案(之前我問),所以我認爲這將是很好的答案在SO。如果您有其他答案,請成爲我的客人。或者只是投票指導其他人的最佳答案。如果您認爲合適,請重新提交此問題。 – 2009-02-08 14:43:15
添加了關於重新啓動控制檯應用程序的信息,因爲這顯然是您正在使用的。 – RoadWarrior 2009-02-09 09:30:35