ホームページ >バックエンド開発 >C++ >C# の非同期/待機: タスクを直接返すか待機しますか?

C# の非同期/待機: タスクを直接返すか待機しますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-04 05:29:39233ブラウズ

Async/Await in C#: Return Task Directly or Await?

非同期メソッドの終了時に返すことと待機することの結果

タスクを返す非同期メソッドには 2 つのオプションがあります後続の非同期呼び出しを処理する場合:

オプション A: タスクを返す直接

Task FooAsync()
{
    return BazAsync();
}

オプション B: タスクを待って戻る

async Task BarAsync()
{
    await BazAsync();
}

オプション A の結果 (戻る)直接)

  • 利点: 必要な定型コードが少なく、作成するタスクが 1 つ少なくなります。
  • 欠点: 内で例外がスローされます。同期メソッドが配信されます

このオプションは、メソッドが少量の同期作業を実行してから単一の非同期メソッドを呼び出す場合に適しています。

オプション B の結果 (Await とReturn)

  • 利点: 例外は非同期で処理されます。
  • 欠点: より冗長なコードとなり、追加のタスクが作成されます。 .

このオプションが推奨されますif:

  • メソッドは、BazAsync() を呼び出した後に追加の非同期操作を実行する必要があります。
  • 非同期メソッドで発生した例外を非同期的に処理したいと考えています。

注: メソッド自体が次の場合、タスクを直接返すことはできません。非同期として宣言されます。これにより、戻り値の型は Task になりますが、これは許可されていません。

要約すると、直接返すか待機するかの決定は、メソッドの特定のニーズによって決まります。この選択を行う場合は、コード構造、例外の可能性、アプリケーションの望ましい動作を考慮してください。

以上がC# の非同期/待機: タスクを直接返すか待機しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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