【发布时间】:2016-12-09 23:36:35
【问题描述】:
关于async-await的快速问题。
如果我有一大段代码,比如
object foo;
Task t1 = LongRunningTaskThatSetsFoo(out foo);
UseFooToDoSomething(foo);
await t1;
那么会发生什么?因为在LongRunningTaskThatSetsFoo 被允许启动的时间(第 2 行)和我们等待其结果的时间(第 4 行)之间没有任何独立的工作要做。
【问题讨论】:
-
标记为潜在重复问题标题和“那么会发生什么?”可能是不一致的,问题更多的是关于内部的。 async / await 通常总是有好处的,因为它允许线程返回池并处理正在发生的其他事情。
-
您不能使用带有
out参数的async方法。如果LongRunningTaskThatSetsFoo不是async,则返回时会设置Foo。 -
@Dennis_E 从技术上讲,它可能是一个仅返回
Task的非异步方法,但即便如此,它也可能是错误的。
标签: c# .net asynchronous parallel-processing async-await