任务什么时候开始?
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);
中等待它时它是否会启动?
答案 0 :(得分:29)
调用async
方法会返回 hot 任务,这是一项已经启动的任务。所以没有必要强制它运行的实际代码。
根据MSDN(thanks to Stephen Cleary)基于任务的异步模式(TAP)模式requires returned tasks to be hot。这意味着除了使用new Task
创建的任务外,所有任务都将很热。
参考文章:
由公共
Task
构造函数创建的任务称为冷任务...所有其他任务在热状态下开始其生命周期。