2011-06-10 94 views
3

我有一個在Windows Server 2008 R2上運行的.NET 4應用程序,我使用一個單獨的運行進程來管理其生命週期(即檢測開啓/意外關閉/重新啓動)。這對於典型情況很好。但是,當應用程序拋出一個異常時,Windows會打開調試窗口來調試應用程序。我只是希望應用程序崩潰,所以進程運行器可以檢測到崩潰並相應地進行管理。讓.Net應用程序在崩潰時關閉

如何讓應用程序關閉異常?

+0

你知道應用程序崩潰的條件嗎,如果是的話你有沒有寫出適當的異常處理? – Coder323 2011-06-10 04:15:45

+0

不要在服務器上安裝Visual Studio。 – 2011-06-10 06:10:07

回答

4

Application.ThreadException和處理程序中添加處理程序,記錄事件,然後很好地退出。

此外,還向AppDomain.CurrentDomain.UnhandledException添加事件處理程序。

Unhandled Exceptions MSDN

編輯:關於處理標記去掉位..感謝亞歷克斯

0

您應該添加一個全球性的異常處理程序或一個try/catch清理資源,記錄錯誤並正常關閉應用程序。

+0

我認爲這可能會對性能造成破壞性影響,儘管... – Pedery 2011-06-10 04:27:38

+0

@Pedery您能詳細說明一下嗎? – 2011-06-10 05:08:21

+0

當然!取決於您的應用程序是否對性能至關重要。我最後一個工作是3D CAD程序,每個鼠標移動都會產生大量計算結果。爲了讓* try *子句跨越性能關鍵塊,顯然會對性能產生重大影響。我們的代碼被剝奪了所有這一切。 – Pedery 2011-06-10 13:05:35

1

添加此行將會阻止顯示「調試窗口」。

Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException); 
+0

此設置僅影響Windows窗體例外。 – 2011-06-10 04:39:49