await
提供されたコードは、MyAsyncMethod()
を使用せずに非同期メソッド await
を呼び出す方法を示しています。これを実行すると、警告が生成され、例外が沈黙する可能性があります。 この記事では、非同期操作の結果を無視しながら例外を効果的に処理するソリューションを紹介します。
方法 1: ContinueWith
例外処理
このアプローチでは、ContinueWith
メソッドを使用して、MyAsyncMethod()
:
<code class="language-csharp">MyAsyncMethod() .ContinueWith(t => Console.WriteLine(t.Exception), TaskContinuationOptions.OnlyOnFaulted);</code>
このコード スニペットは、継続タスクを MyAsyncMethod()
にアタッチします。 MyAsyncMethod()
が例外をスローした場合、継続タスクが実行され、例外の詳細が別のスレッドでコンソールに書き込まれます。
方法 2: 正確な例外管理のための await
と try-catch
または、await
ブロックと try-catch
ブロックを利用すると、より詳細な例外処理が可能になります。
<code class="language-csharp">try { await MyAsyncMethod().ConfigureAwait(false); } catch (Exception ex) { Trace.WriteLine(ex); }</code>
このメソッドは、try-catch
を介して対象を絞った例外処理を提供します。 ConfigureAwait(false)
例外が元のコンテキストにマーシャリングされて戻されるのを防ぎ、現在のスレッドが実行を継続できるようにします。
どちらのメソッドも、結果を待たずに非同期メソッドを呼び出す際の例外の安全性を確保します。特定のニーズと例外処理要件に最も適したアプローチを選択してください。
以上が「await」を使用せずに C# で非同期メソッドを安全に呼び出し、例外を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。