为什么返回Task
的方法在返回实例时不会被执行。我认为这必须发生,因为await
方法/委托会
将它放入一些队列,然后执行生成的任务。
那么为什么在调用Task
时,Do()
永远不会被执行?
public void Do()
{
SomeTask().Wait()
}
public async Task SomeTask()
{
return new Task(() => { Console.WriteLine("Hello World!") });
}
修改
或者我是否需要await Task.Run(...)
?
非常感谢!
答案 0 :(得分:6)
您正在创建Task
但从未启动它,因此无法完成。
使用Task.Run
返回" hot" (已开始)Task
代替:
return Task.Run(() => { Console.WriteLine("Hello World!") });
此外,async
关键字是不必要的,因为您还没有等待创建的任务。