タスクは実際にいつ開始されますか?
_public void DoSomething() {
Task myTask = DoSomethingAsync();
Task.WaitAll(new[] { myTask }, 2000);
}
public async Task DoSomethingAsync() {
await SomethingElse();
}
_
Task myTask = DoSomethingAsync();
で初期化するとすぐに開始されますか、またはTask.WaitAll(new[] { myTask }, 2000);
で待機するように言ったときに開始されますか?
async
メソッドを呼び出すと、hotタスク(すでに開始されているタスク)が返されます。したがって、強制的に実行するために必要な実際のコードはありません。
MSDNによれば( Stephen Clearyに感謝 )タスクベースの非同期パターン(TAP)パターン 返されたタスクはホットである必要があります 。つまり、new Task
で作成されたタスクを除くすべてのタスクがホットになります。
参照記事から:
Public
Task
コンストラクターによって作成されたタスクは、コールドタスクと呼ばれます...他のすべてのタスクは、ライフサイクルをホット状態で開始します。