ホームページ >バックエンド開発 >C++ >「await」を使用せずに C# で非同期メソッドを安全に呼び出し、例外を処理するにはどうすればよいですか?

「await」を使用せずに C# で非同期メソッドを安全に呼び出し、例外を処理するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-12 10:52:41696ブラウズ

How Can I Safely Call Async Methods in C# Without Using `await` and Still Handle Exceptions?

await

を使用しない非同期 C# メソッドの安全な呼び出し

提供されたコードは、MyAsyncMethod() を使用せずに非同期メソッド await を呼び出す方法を示しています。これを実行すると、警告が生成され、例外が沈黙する可能性があります。 この記事では、非同期操作の結果を無視しながら例外を効果的に処理するソリューションを紹介します。

方法 1: ContinueWith 例外処理

このアプローチでは、ContinueWith メソッドを使用して、MyAsyncMethod():

からの例外を非同期的に管理します。
<code class="language-csharp">MyAsyncMethod()
    .ContinueWith(t => Console.WriteLine(t.Exception),
        TaskContinuationOptions.OnlyOnFaulted);</code>

このコード スニペットは、継続タスクを MyAsyncMethod() にアタッチします。 MyAsyncMethod() が例外をスローした場合、継続タスクが実行され、例外の詳細が別のスレッドでコンソールに書き込まれます。

方法 2: 正確な例外管理のための awaittry-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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。