WinRT中的RX线程问题

时间:2012-10-28 15:03:41

标签: windows-runtime system.reactive

我有一些简单的代码:

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

有什么想法吗?

2 个答案:

答案 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();