0

我正在开发一些 corss 平台库,需要在 UI 线程上执行一个操作。虽然我知道有一个方法 Dispatcher.RunAsync 可以在 UI 线程上执行操作,但它是异步的,我不能使用 await/async 功能,因为代码是跨平台的,我不希望库绑定到.net 4.5 的等待/异步功能。

有什么方法可以在 UI 线程上同步执行操作?

谢谢

4

2 回答 2

2

跨平台库不应依赖于特定的 UI(例如,DispatcherCoreDispatcher)。有一种表示抽象“上下文”的类型SynchronizationContext:不久前我写了一篇关于这个主题的MSDN 文章。

如果您的库可以在需要使用 UI 上下文之前捕获它,那么您可以捕获SynchronizationContext.Current并稍后用于Send在原始上下文上同步执行一些代码。

于 2013-01-14T13:26:41.997 回答
1

如果您从 UI 线程执行它 - 没有办法做到这一点。例如,您可以在后台线程中使用 AutoResetEvent,在调用 RunAsync 并从 RunAsync 回调设置它之后等待该事件。

于 2013-01-14T03:32:18.467 回答