我在.NET 4.0中構建一個小型示例應用程序以測試某些任務異常處理。我下面寫運行時使用的應用程序框架版本目標和網絡框架版本
Task.Factory.StartNew(() =>
{
throw new Exception("Exception");
}
Thread.Sleep(100);
GC.Collect();
GC.WaitForPendingFinalizers();
我預想的代碼,因爲我的應用程序是.NET 4.0,我會得到一個未處理的異常,但沒有發生。我在文章UnobservedTaskException is not killing the process中看到,即使您的應用程序是.Net 4.0(如果已安裝Net Framework 4.5),它也會在稍後運行。
事實上,當我添加:
<runtime>
<ThrowUnobservedTaskExceptions enabled="true"/>
</runtime>
唯一的例外是在4.5
拋出與應用程序可以有人解釋是什麼樣的應用程序版本和安裝框架版本的一般原則?
感謝Hans對這些解釋。我確實認爲,當我們在機器框架4.0和4.5上安裝時,4.0中的應用程序構建將運行在框架4.0之上而不是4.5,但在我看來,應用程序似乎運行在4.5之上。可能有任何配置要添加? – Che
不,這是不可能的,4.5和4.6不是並排版本。他們*覆蓋* 4.0安裝。在一臺只有4.0的計算機上運行的可能性現在非常小,它必須是XP或Server2003或拒絕使用Windows Update的用戶。不是您想要支持的那種客戶。最好的方法是不需要通過定位4.5 :) –
謝謝,有趣的,然後我們可以說應用程序運行在機器上安裝的最新Framework版本之上,無論它是否構建在較低版本中,什麼時候會導致意外的變化我們升級了框架而不需要改變應用程序。 – Che