私はいくつかのタスク例外処理をテストするために.Net 4.0で小さなサンプルアプリケーションを構築します。私のアプリケーションがネット4.0であるように私は私は未処理の例外が、何が起こる取得すること、アプリケーションのフレームワークのバージョンターゲットと実行時に使用されるNet Framworkのバージョン
Task.Factory.StartNew(() =>
{
throw new Exception("Exception");
}
Thread.Sleep(100);
GC.Collect();
GC.WaitForPendingFinalizers();
私は期待以下のコードを記述します。私はポストUnobservedTaskException is not killing the processであなたのアプリケーションが.Net 4.0であっても、あなたがネットフレームワーク4.5をインストールしている場合、これは後で実行されることが分かります。
は確かに私が追加したとき:
<runtime>
<ThrowUnobservedTaskExceptions enabled="true"/>
</runtime>
を例外が4.5
にアプリケーションのように投げている人は、アプリケーションのバージョンおよびインストールのフレームワークのバージョンに関する一般的な原則であるかを説明することはできますか?
これらの説明はありがとうございました。マシンフレームワーク4.0と4.5にインストールしたとき、4.0のアプリケーションビルドは4.5ではなく4.0のフレームワークで実行されると思っていましたが、私の場合、アプリケーションは4.5の上で動作するようです。追加する設定はありますか? – Che
いいえ、それは可能ではありません。4.5と4.6は並んでいません。彼らは* 4.0のインストールを上書きします。あなたが今までに4.0を持っているマシンで動かす確率は、今日はかなり小さく、XPまたはServer2003、またはWindows Updateの使用を拒否するユーザーでなければなりません。あなたがサポートしなければならない顧客の種類ではありません。最良の方法は、4.5をターゲットにすることです。 –
ありがとう、面白い、それからアプリケーションは、最新のフレームワークのバージョンの上に実行すると言うことができますそれは何かの予期しない変更につながる可能性がありますアプリケーションに何も変更することなく、フレームワークをアップグレードします。 – Che