Windows phone 8 什么';这是在UI线程上观察的正确方法

Windows phone 8 什么';这是在UI线程上观察的正确方法,windows-phone-8,system.reactive,Windows Phone 8,System.reactive,我正在通过构建可观察对象,事件必须在UI线程上订阅 ObserveOnDispatcher不推荐使用吗?我通常写: .ObserveOn(DispatcherScheduler.Instance) 如果我没有使用。如果我是,那就是 .ObserveOn(RxApp.MainThreadScheduler) 不同之处在于,在单元测试运行程序中,RxApp.MainThreadScheduler自动装配为CurrentThread,因此您的单元测试通过-否则它们都将挂起。ObserveOnDis

我正在通过构建可观察对象,事件必须在UI线程上订阅

ObserveOnDispatcher
不推荐使用吗?

我通常写:

.ObserveOn(DispatcherScheduler.Instance)
如果我没有使用。如果我是,那就是

.ObserveOn(RxApp.MainThreadScheduler)
不同之处在于,在单元测试运行程序中,
RxApp.MainThreadScheduler
自动装配为
CurrentThread
,因此您的单元测试通过-否则它们都将挂起。

ObserveOnDispatcher()
未被弃用,但正如Paul所说,通常最好提供一个显式的调度器,这样就可以为单元测试注入
TestScheduler

DispatchersScheduler.Current
可用于获取当前的
DispatchersScheduler
-而不是
。实例
,这很有意义,因为实际上可以有多个-尽管大多数人不需要走那条路

Windows Phone 8 Rx版本中存在
ObserveOnDispatcher()
DispatchersScheduler
。它们位于包含xaml平台特定元素的
rx xaml
nuget包中-如果只包含
rx main
,您可能会错过这一点


具体来说,它们位于
System.Reactive.Windows.Threading.dll
程序集中
ObserveOnDispatcher()
位于
System.Reactive.Linq.DispatcherObservable
类型上,并且程序集还具有
System.Reactive.Concurrency.DispatcherScheduler

DispatcherScheduler
的命名空间和程序集中?我找到的(
Microsoft.Phone.Reactive.DispatcherScheduler
)位于C:\Program Files(x86)\Reference Assemblys\Microsoft\Framework\WindowsPhone\v8.0\Microsoft.Phone.Reactive.dll,而不是任何NuGet软件包上。
rx xaml
:这就是我所缺少的!