繁体   English   中英

异步lambda的执行方式有何不同?

[英]Is there any difference in execution for async lambda?

这是一个愚蠢的问题,但是以某种方式使我感到自己缺少了一些东西。 异步lambda和常规方法在执行上有什么区别吗? 像这样

var tasks = list.Select(async c => { /* await somewhere */});
await Task.WhenAll(tasks);

然后

async Task<object> GetSomething(object c) { /* await somewhere */}
// ...
var task = list.Select(GetSomething);
await Task.WhenAll(tasks);

编辑:我问,因为我有一个误解,如果lambda行为可能不同于正常方法。 假设lambda和方法具有相同的主体,lambda是否有可能创建空任务? 否则执行将无法按预期工作?

谢谢,我没想到会这么快!

Lambda会创建匿名方法或表达式树,具体取决于它是在接受委托还是Expression<...>类型的上下文中使用。 在那些创建匿名方法的情况下,就像您显式编写该方法一样。 捕获的变量可能会更改方法的定义位置,但是它始终是运行时所看到的真实方法。 async关键字不会对此进行更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM