私は同じようにいくつかのコードに出くわした:は `async`ラムダを` Task.Run() `と冗長に使用していますか?
var task = Task.Run(async() => { await Foo.StartAsync(); });
task.Wait();
(いいえ、私はFoo.StartAsync()
の内部動作を知りません)。私の最初の反応はとasync
/await
を取り除くと書き換えますされます:
var task = Foo.StartAsync();
task.Wait();
それは(約Foo.StartAsync()
全く何も知らない、再び)が正しいか、ではないだろう。 This答えがWhat difference does it make - running an 'async' action delegate with a Task.Run ...の場合がありますが、それは意味をなさない場合がありますが、「真実を伝えるためには、多くのシナリオを見たことがありません...」
どちらの場合でも、 'Task.Wait'と同時に待つのではなく、' await'する必要があります。 – i3arnon