1

我有一些简单的代码:

var timer =  Observable.Timer(TimeSpan.FromSeconds(0), TimeSpan.FromSeconds(1)).Timestamp();

 //timer.Subscribe(x => timerTb.Text = x.Value.ToString());
 timer.Subscribe(x => Debug.WriteLine(x.Value));

视图上有一个名为 timerTb 的文本框。我正在尝试让注释掉的行在没有大喊编组问题的情况下正常工作。

据我所知,我应该使用timer.ObserveOnDispatcher().Subscribe(... 但我无权访问此方法,也无权访问 CoreDispatcherScheduler dispite 引用“System.Reactive.Linq;”

我正在运行 RX 2.0.20304.0

有任何想法吗?

4

2 回答 2

2

我设法让它工作。

愚蠢的菜鸟错误CoreDispatcherScheduler在:System.Reactive.Windows.Threading

一旦我提到我得到了 ObserveOnDispatcher() 并且这有效:

var timer = Observable.Timer(TimeSpan.FromSeconds(0), TimeSpan.FromSeconds(1)).Timestamp();

timer.ObserveOnDispatcher().Subscribe(x => timerTb.Text = x.Value.ToString());
于 2012-10-28T19:22:20.890 回答
1

将计时器放在 UI 线程上:

Observable.Timer(TimeSpan.FromSeconds(0), TimeSpan.FromSeconds(1), CoreDispatcherScheduler.Instance)
    .Timestamp();
于 2012-10-28T18:51:45.087 回答