非同期プログラミングでは、メソッドの返品値はまたは
に大きな効果があります。この記事では、各選択肢の該当するシーンについて説明します。
async
タスクに戻りますTask
void
メソッドはを返す必要があります。これにより、このタスクを呼び出し、必要に応じてその進捗を追跡することができます。このルールの主な例外は、イベントの処理など、タイプを返すために明らかにが必要な場合です。
void async
Task
に戻ります
await
return typevoid
メソッドを使用して、「上部非同期操作」としてマークします。これらの操作の動作は、異常な場合に異なります。返品値のとは異なり、非同期法の
処理プログラムをトリガーする場合があります。 次の例を考えてみましょう
この例では、異常を明示的に処理する必要がないため、およびvoid
キーワードは不要です。ただし、異常が発生した場合、それは観察されず、正しく処理されない場合があります。 async
異常な治療の例Task
例void とTaskScheduler.UnobservedTaskException
非同期的な方法の異常な治療の違いを示すために、次のコードを検討してください。
電話をかけると、異常を観察し、他の未処理の異常と見なすことができます。ただし、が呼び出された場合、異常は決して観察されず、
処理プログラムによって処理され、それが不正な動作につながります。<code class="language-csharp">public static async void AsyncMethod2(int num) { await Task.Factory.StartNew(() => Thread.Sleep(num)); }</code>
ベストプラクティスasync
await
必要な場合を除き、常にメソッドからを返します。これにより、異常が適切に処理されることが保証され、発信者はタスクを選択してその進捗を追跡できます。
詳細については、MicrosoftのドキュメントをTask
/void
ベストプラクティス:
以上がasync/await:タスクまたは無効を返す必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。