多くの改善点があるため、.net 4.5 に切り替えたいと考えています。
しかし...時々、フレームワークの些細ではない変更について、いくつかのトリッキーな詳細を見つけました。
例として、 TPL の観察されない例外処理を見てみましょう。
例外を伝達するタスクを待機しない場合、またはその Exception プロパティにアクセスしない場合、タスクがガベージ コレクションされるときに、.NET 例外ポリシーに従って例外がエスカレートされます。(注: 「例外ポリシー」という用語のリンクや説明はありません)
まあ、それは.Net v.4.0のように見える動作です
しかし、Stephen Toubはさらに次のように語っています。
開発者がタスクに基づいて非同期コードを簡単に記述できるようにするために、.NET 4.5 では監視されない例外の既定の例外動作が変更されています。監視されていない例外によって UnobservedTaskException イベントが発生することはありますが (そうしないと重大な変更になります)、デフォルトではプロセスはクラッシュしません。むしろ、イベント ハンドラーが例外を監視するかどうかに関係なく、イベントが発生した後に例外が食べられることになります。ただし、この動作は構成できます。新しい CLR 構成フラグを使用して、.NET 4 のクラッシュ動作に戻すことができます。
この変更は、開発者が未処理の例外を無視することに不注意であることを意味するものではありません。これは、ランタイムが以前よりも少し寛容であることを意味するだけです。することが。
それは大きな驚きです。ドキュメントに更新がないことを考慮してください。
ですから、.Net v4.5 で発生したその他の「サイレント」変更について知りたいと思い
ます。知識を共有してください。
PS ここでの「サイレント」という言葉は、Wat の新しい記事や公式ドキュメントからもほとんど知られていない変更を意味します。