【发布时间】:2013-10-26 12:31:43
【问题描述】:
许多 API 正朝着仅公开异步方法的方向发展。在您必须立即等待这些方法的情况下,性能会受到多少影响?假设它导致当前线程等待生成的线程完成,我错了吗?或者 CLR 是否在这些场景中执行某种魔法并使其全部在同一个线程中执行?
【问题讨论】:
-
你的意思是阻塞等待,即
task.Wait(),还是异步“等待”,即await task? -
task.Wait()。我正在执行此操作的方法无法调用await,因为它无法生成async。 -
那你为什么要调用异步方法呢?没有同步版本可以调用吗?请向我们展示您是如何启动异步方法的,具体取决于它的启动方式,可能会发生不同的事情。
-
通常如果你使用
async/await,整个调用链应该是异步的。您可以在顶层使用Wait阻止,例如在控制台应用程序的Main中。你究竟会在哪里阻塞(如果你应该阻塞的话)取决于你的代码执行环境。 -
@ScottChamberlain 没有可调用的同步版本。我的问题的第一句话有点暗示。
标签: c# .net multithreading async-await