.net C#

C#のタスク注意事項

投稿日:2018年2月3日 更新日:

 

バックグラウンドタスクで発生した例外

  • タスクの例外処理に関しては、.NET 4.5で大きな仕様変更が発生している。
  • バックグラウンドタスクの完了を待機する(awaitキーワードやWaitメソッドを使う)場合には、バックグラウンドタスクで発生した例外が呼び出し元のスレッドに送られる。これには変更がない。
  • バックグラウンドタスクの完了を待機しない場合には、次のように仕様が変わっている。
    1. .NET 4.0: トラップされなかった場合は、プログラムが終了する
    2. .NET 4.5: トラップされなかった場合は、その例外は失われる(既定値)
  • この.NET 4.5の動作は、.NET 4.0と同じ動作をするように変更できる。App.configファイルでThrowUnobservedTaskExceptionsをtrueに設定する。

  <!--バックグラウンドタスクで発生した例外を必ず受け取れるようにする設定 -->
  <runtime>
    <ThrowUnobservedTaskExceptions enabled="true"/>
  </runtime>

 

 

 

参考にさせて頂いたページ

WPF:例外をまとめてトラップするには?[C#/VB]

 

 

 

スポンサーリンク

スポンサーリンク

-.net, C#

執筆者:

関連記事

C#のタスクとasync/awaitについて

  非同期メソッドとasync/awaitキーワード 非同期処理でありながら、コールバック記述をする事なく、awaitキーワードを使って完了待機を記述できる(同期的に記述できる)。 「非同期 ...