在 UI 线程上观察的正确方法是什么



我正在通过地理定位器构建可观察量,并且必须在 UI 线程上订阅事件。

ObserveOnDispatcher被弃用了吗?

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

DispatcherScheduler.Current可以用来获取当前DispatcherScheduler - 而不是.Instance ,这是有道理的,因为实际上可以有多个 - 尽管大多数人不需要沿着那条特定的道路走下去!

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

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

我通常写:

.ObserveOn(DispatcherScheduler.Instance)

如果我不使用反应式用户界面。如果我是,那就是

.ObserveOn(RxApp.MainThreadScheduler)

不同之处在于,在单元测试运行器中,RxApp.MainThreadScheduler 会自动纵为CurrentThread,因此您的单元测试通过 - 否则它们将全部挂起。

相关内容

  • 没有找到相关文章

最新更新