task.run和async之间的区别

时间:2019-08-22 22:19:33

标签: c# async-await

我正在做一些健全的检查,需要解决:

两者之间是否有区别

Task.Run(async () => await dothingAsync());

Task.Run(dothingAsync);

编辑(dothingasync的签名)

private Task dothingAsync();

private async Task dothingAsync();

1 个答案:

答案 0 :(得分:2)

这里有一个Pivot Chart A,其中有更多细节。 blog post on the subject也非常相似,除了它处理方法而您的问题涉及lambda(由编译器转换为方法)。

总而言之,这两种方法几乎是等效的。使用关键字确实会引入状态机。在这种情况下-由于lambda仅调用一个方法并返回其结果-省略关键字是合适的。如果您确实包含asyncawait,则只会增加一点点开销,而无济于事。