【发布时间】:2014-09-10 02:38:00
【问题描述】:
假设您有一个典型的异步设计模式 API,它具有
- 启动异步进程的 Start 方法
- 进程完成时调用的回调
如何使用 .NET 3.5 以同步方式调用此 API 而不会在调用期间阻塞消息泵?
【问题讨论】:
-
当然,如果您想要同步阻止某些内容 - 您可以使用在回调中设置的
ManualResetEvent轻松完成此操作(当然可以是 lambda/closure),您只需.Wait为它。 -
为什么要在同步模式中调用这个函数?同步调用的字面意思是“阻塞直到完成”,所以如果你没有阻塞运行消息泵的 UI 线程,你想阻塞什么?您能否更新您的问题以显示此功能的预期用途,这将使我们更好地了解您要完成的工作。
-
@scottchamberlain:假设在这个 API 中没有同步函数可以调用。
-
@CarstenKönig:waitOne() 将阻塞 UI 线程并停止消息泵
-
@Denis
waitOne或任何会阻塞线程你在 - 这就是同步 是 -选择正确的线程是您的责任
标签: c# .net vb.net multithreading