ホームページ >バックエンド開発 >C++ >async/await:タスクまたは無効を返す必要がありますか?

async/await:タスクまたは無効を返す必要がありますか?

Susan Sarandon
Susan Sarandonオリジナル
2025-02-01 14:06:10370ブラウズ

Async/Await: Should I Return a Task or Void?

async/awaitメソッドの返品値:タスクまたはvoid?

非同期プログラミングでは、メソッドの返品値はまたは

に大きな効果があります。この記事では、各選択肢の該当するシーンについて説明します。

asyncタスクに戻りますTaskvoid

通常、

メソッドはを返す必要があります。これにより、このタスクを呼び出し、必要に応じてその進捗を追跡することができます。このルールの主な例外は、イベントの処理など、タイプを返すために明らかにが必要な場合です。

void asyncTaskに戻ります 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>

ベストプラクティスasyncawait

ベストプラクティスとして、タイプを返すために明確に

必要な場合を除き、常にメソッドからを返します。これにより、異常が適切に処理されることが保証され、発信者はタスクを選択してその進捗を追跡できます。

詳細については、MicrosoftのドキュメントをTask/voidベストプラクティス:

https://www.php.cn/link/d3ddeddd999aa150f47C2D0A55CB17898

以上がasync/await:タスクまたは無効を返す必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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