私の問題は、タスクにTask.WhenAll()呼び出し(他のタスクの実行)がある場合、WhenAll()の行によって、予想とは異なり、消費するコードの実行が継続されることです。したがって、次のコードは、引数内のすべてのタスクが終了した後ではなく、Task.WhenAll()がヒットした直後に「終了」を出力します。
// Just a simple async method
public Task DoWorkAsync()
{
return Task.Factory.StartNew(
() =>
{
// Working
});
}
// This one used the previous one with Task.WhenAll()
public Task DoLoadsOfWorkAsync()
{
return Task.Factory.StartNew(
async () =>
{
// Working
// This line makes the task return immediately
await Task.WhenAll(DoWorkAsync(), DoWorkAsync());
// Working
});
}
// Consuming code
await DoLoadsOfWorkAsync();
Console.WriteLine("finished");
DoLoadsOfWorkAsync()の最後の行が実行されたときに、WriteLine()が呼び出されることを期待しています。
私は何が間違っているのですか?前もって感謝します。