我在Geolocator上构建了observable,并且必须在UI线程上订阅事件。
是否已弃用ObserveOnDispatcher
?
答案 0 :(得分:4)
ObserveOnDispatcher()
,但正如Paul所说,提供明确的调度程序通常会更好,因此您可以为单元测试注入TestScheduler
。
DispatcherScheduler.Current
可用于获取当前DispatcherScheduler
- 而不是.Instance
,这是有道理的,因为实际上可以有不止一个 - 尽管大多数人不应该失败那条特别的道路!
ObserveOnDispatcher()
和DispatcherScheduler
。它们位于rx-xaml
nuget包中,其中包含xaml平台特定元素 - 如果您只包含rx-main
,则会错过这个。
具体来说,它们位于System.Reactive.Windows.Threading.dll
程序集中。 ObserveOnDispatcher()
类型为System.Reactive.Linq.DispatcherObservable
,程序集也有System.Reactive.Concurrency.DispatcherScheduler
。
答案 1 :(得分:2)
我经常写:
.ObserveOn(DispatcherScheduler.Instance)
如果我没有使用ReactiveUI。如果我是,那就是
.ObserveOn(RxApp.MainThreadScheduler)
不同之处在于,在单元测试运行中,RxApp.MainThreadScheduler
被自动绑定为CurrentThread
,因此您的单元测试通过 - 否则它们都会挂起。