使用等待和自制异步方法的问题

Issue using awaitable and self made async method

为什么返回 Task 的方法在返回它的实例时没有被执行。我认为这一定会发生,因为 awaiting 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 关键字是不必要的,因为您没有等待创建的任务。