内でTask.Resultを呼び出す結果を待つためにContinueWith()を使用する次のコードが出てきました。待っているタスクでContinueWith()を使用して、
public async Task<User> GetUser()
{
return await _serviceRepo.GetUserAsync()
.ContinueWith(task =>
{
return task.Result;
});
}
ContinueWith()
はGetUserAsync()
コールからタスクが戻るまで、呼び出し元のスレッドをブロックしていますか?
task.Result
は予定されているContinueWith()内にあるため、前件を待っている間何かがブロックされていますかtask
?
私はこのタイプのコードをいくつかの場所で見ましたが、これは非同期/待機パターンのベストプラクティスと考えられますか? GetUserAsync()
コールでは、ContinueWith()
を使用するよりも結果を返すことが期待されます。
待機中の「タスク」には「ContinueWith」は使用されていません。 'ContinueWith'によって作成された続行' Task'を待っています。ところで、なぜ公共のタスクを使用しないでください。 GetUser()=> _serviceRepo.GetUserAsync(); ' –
PetSerAl
このような理由はありません。 async、await、およびContinueWithを完全に削除することができます。 – Evk