在WinRT中同步对UI线程执行操作

时间:2013-01-14 03:04:56

标签: windows-runtime

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

有没有办法同步在UI线程上执行操作?

由于

2 个答案:

答案 0 :(得分:2)

跨平台库不应依赖于特定的用户界面(例如DispatcherCoreDispatcher)。有一种代表抽象“背景”的类型:SynchronizationContext;我不久前写了一篇关于这个主题的MSDN article

如果您的库可以在需要使用它之前捕获UI上下文,那么您可以捕获SynchronizationContext.Current,然后使用Send同步执行原始上下文中的某些代码。 / p>

答案 1 :(得分:1)

如果从UI线程执行它 - 则无法执行此操作。从后台线程可以执行此操作,例如使用您在调用RunAsync并从RunAsync回调中设置它后等待的AutoResetEvent。