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 キーワードを使用できますよね?
上記に違いはありますか?「より良い」のはどれですか?