我正在做一些健全的检查,需要解决:
两者之间是否有区别
Task.Run(async () => await dothingAsync());
和
Task.Run(dothingAsync);
编辑(dothingasync的签名)
private Task dothingAsync();
或
private async Task dothingAsync();
答案 0 :(得分:2)
这里有一个,其中有更多细节。 blog post on the subject也非常相似,除了它处理方法而您的问题涉及lambda(由编译器转换为方法)。
总而言之,这两种方法几乎是等效的。使用关键字确实会引入状态机。在这种情况下-由于lambda仅调用一个方法并返回其结果-省略关键字是合适的。如果您确实包含async
和await
,则只会增加一点点开销,而无济于事。