【发布时间】:2020-03-30 14:31:17
【问题描述】:
我有一个执行器方法:
public static async Task<T> ExecuteAsync(Func<Task<T>> method)
{
await method();
}
同时调用它时
await ExecuteAsync( () => obj.MethodAsync());
和
await ExecuteAsync( async () => await obj.MethodAsync());
似乎工作得很好,并在大致相同的时间内完成,同时产生大致相同数量的线程。我的理解是,在第一种情况下,方法将在 lambda 内部同步执行,而 lambda 将异步执行,而在第二个示例中,方法和 lambda 都将异步执行。
【问题讨论】:
-
可能重复:Any difference between “await Task.Run(); return;” and “return Task.Run()”? TL;DR 几乎没有任何区别。
-
感谢您对其他问题的引用。我认为我选择的答案很好地推理和解释了当我使 lambda 异步时发生的情况。
标签: c# asynchronous lambda async-await delegates