【发布时间】:2012-10-06 09:05:09
【问题描述】:
正如我最近发现的那样,在没有同步上下文的情况下执行await 可能会导致等待后的代码在不同的线程上执行。
我目前在 VSTO 办公室插件中遇到奇怪行为的问题,我认为这可能是这种行为的结果。在处理 Office 应用程序引发的事件时,没有适当的同步上下文(除非我创建了一个表单,这将创建一个同步上下文)。
我的问题是创建表单是否是确保我拥有同步上下文的最佳/最有效方式,或者是否有更简单的方式来做到这一点。
【问题讨论】:
-
在这种情况下不使用
await不是更容易吗?如果您使用的 API 仅是异步的,您可以通过使用Task的Result或Wait()来实现。 -
@svick:我猜你的意思是,如果我希望 await 在同一个线程上返回,那么这实际上是“同步”行为。嗯……是的,我想是的。 叹息。老实说,我对这些东西有点迷茫。
标签: c# async-await c#-5.0