This question already has answers here:
Any difference between “await Task.Run(); return;” and “return Task.Run()”?

(4 个回答)


5年前关闭。




有两种方法
public async Task T1()
{
    await Task.Run(() => /*do something here*/);
}

public Task T2()
{
    return Task.Run(() => /*do something here*/);
}

它们之间有什么区别吗?

最佳答案

我相信第一个变体将等待任务完成(不是通过阻塞线程,而是通过签署方法的其余部分在任务完成时执行,在 Continuation Passing Style 中)。第二个选项不会。您已经启动并返回了一个任务,但是您的调用线程将继续执行,除非它调用 .Wait() 或其他方法。

async/await 的东西只是围绕使用 Task 和延续传递样式重写方法的语法糖,尽管结果通常足够复杂,您不会手工完成。

关于c# - 异步/等待和返回任务相同吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33934562/

10-12 00:02
查看更多