ObserveOnDispatcher抛出异常

时间:2014-08-07 16:50:03

标签: multithreading system.reactive

当我从主线程以外的线程创建新的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上观察它?

1 个答案:

答案 0 :(得分:1)

如果您正在使用ReactiveUI,则永远不要使用ObserveOnDispatcher,始终使用ObserveOn(RxApp.MainThreadScheduler)。此外,Timer方法本身需要IScheduler,这比在此使用ObserveOn更好