這與previous question有關。爲什麼AppDomain異常總是會終止應用程序?
我現在想明白的是,如何防止UI線程異常終止應用程序,而非UI異常無法終止。
僅供參考,請參閱this example。
最重要的是,我希望在這種情況下能夠做到的是「無聲地」終止進程 - 不顯示Windows對話框,詢問是否要發送錯誤報告。
這是我的AppDomain UnhandledExceptionHandler:
private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
try
{
// Maybe do some logging here if allowed
}
catch
{
}
// then just terminate the application
Application.Exit();
}
UPDATE
在在this answer意見光,我想澄清的是最重要的,我想了解更多有關的機制,使UI線程能夠及早通過Application.ThreadException
機制捕獲未處理的異常。並且這種行爲是否可以在非UI線程上實現。
@Reed很感興趣:「在UI線程中未處理的異常會導致相同發生的事情。「 - 這不是真的。請創建一個測試應用程序並自己嘗試。 – 2009-08-19 17:15:30
從技術上講,我應該說「主線程未處理的異常」。 Windows窗體在UI線程上添加自己的異常處理行爲(因爲它完全在UI線程上運行),這會改變主線程的行爲。製作一個控制檯應用程序,然後嘗試一下,你會發現無論發生什麼線程事件都無關緊要 - 它們會全部拆除應用程序。 – 2009-08-19 17:20:51
然後我應該重申我的問題:UI線程如何完成它的一般異常處理行爲?這是我可以複製爲非UI線程行爲的東西嗎? – 2009-08-19 17:24:15