我有一些简单的代码:
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
有什么想法吗?
答案 0 :(得分: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());
答案 1 :(得分:1)
将您的计时器放在UI线程上:
Observable.Timer(TimeSpan.FromSeconds(0), TimeSpan.FromSeconds(1), CoreDispatcherScheduler.Instance)
.Timestamp();