使用等待和自制异步方法的问题
Issue using awaitable and self made async method
为什么返回 Task
的方法在返回它的实例时没有被执行。我认为这一定会发生,因为 await
ing method/delegate 会
将其放入一些 queue 中,然后执行生成的任务。
那么为什么这个 Task
在调用 Do()
时永远不会执行?
public void Do()
{
SomeTask().Wait()
}
public async Task SomeTask()
{
return new Task(() => { Console.WriteLine("Hello World!") });
}
编辑
或者我总是需要 await Task.Run(...)
?
非常感谢!
您正在创建一个 Task
但从未启动它,因此它不可能完成。
使用Task.Run
来return一个"hot"(开始)Task
代替:
return Task.Run(() => { Console.WriteLine("Hello World!") });
此外,async
关键字是不必要的,因为您没有等待创建的任务。
为什么返回 Task
的方法在返回它的实例时没有被执行。我认为这一定会发生,因为 await
ing method/delegate 会
将其放入一些 queue 中,然后执行生成的任务。
那么为什么这个 Task
在调用 Do()
时永远不会执行?
public void Do()
{
SomeTask().Wait()
}
public async Task SomeTask()
{
return new Task(() => { Console.WriteLine("Hello World!") });
}
编辑
或者我总是需要 await Task.Run(...)
?
非常感谢!
您正在创建一个 Task
但从未启动它,因此它不可能完成。
使用Task.Run
来return一个"hot"(开始)Task
代替:
return Task.Run(() => { Console.WriteLine("Hello World!") });
此外,async
关键字是不必要的,因为您没有等待创建的任务。