19

System.Threading.Task に関して、少し読んで、await キーワードと async キーワードの基本を理解したと思います。

ただし、小さな問題について正しいかどうかはわかりません。検証を求めているか、誰かが私を修正してくれるかを探しています。

次のシグネチャを使用して、非同期メソッドを実装しています。

public Task ProcessUploadedFile(FileInfo info, string contentType);

明らかに、メソッド内で何かを待ちたい場合は、署名に async キーワードを追加する必要があります。

私の質問は次のとおりです。私のメソッドが最後に別の非同期メソッドを呼び出すか、タスクを返す場合、それを待つ意味はありますか?

例えば。

1:

public async Task ProcessUploadedFile(FileInfo info, string contentType)
{
  foreach (var something in someCollection)
    DoSomething();

  DoSomethingElse();

  await DoMethodAsync();
}

2:

public Task ProcessUploadedFile(FileInfo info, string contentType)
    {
      foreach (var something in someCollection)
        DoSomething();

      DoSomethingElse();

      return DoMethodAsync();
    }

最初に前者を書きましたが、await を追加する意味がわかりません。後者を書いたとしても、同じことを達成し、両方のメソッドの呼び出し元は、選択した場合でも await キーワードを使用できますよね?

上記に違いはありますか?「より良い」のはどれですか?

4

1 に答える 1