当我从主线程以外的线程创建新的Timer Observable
时,我调用ObserveOnDispatcher
我收到以下错误
当前线程没有与之关联的Dispatcher
我在网上发现了一些类似的讨论,一个人建议在DispatcherScheduler.Instance
中使用ObserveOn
。它有效,但这是有趣的部分。
以下代码为您提供Instance
属性已过时的警告,我们应使用Current
属性
var something = Observable.Timer(TimeSpan.FromSeconds(1.0)).ObserveOn(DispatcherScheduler.Instance)
当我将其更改为使用' DispatcherScheduler.Current'时,我得到了与ObserveOnDispatcher
相同的例外情况。
创建 Observable.Timer
而不在主要线程中的最有效方法是什么,并在Dispatcher上观察它?
答案 0 :(得分:1)
如果您正在使用ReactiveUI,则永远不要使用ObserveOnDispatcher
,始终使用ObserveOn(RxApp.MainThreadScheduler)
。此外,Timer
方法本身需要IScheduler
,这比在此使用ObserveOn
更好