更新视图 - Reactive Extensions

时间:2016-07-02 11:55:16

标签: android xamarin rx.net

我有以下代码:

  

Observable.Interval(TimeSpan.FromMilliseconds(2500))。SubscribeOn(XXX).ObserveOn(YYY).Subscribe(               t => SendCounter(T),               e => HandleException(E));

XXX,YYY为Schedulers

在SendCounter内部(t)我设置了一个带t值的文本。

问题是,当我运行代码时,我收到了这个错误:

'only the original thread that created a view hierarchy can touch its views'

我正在使用此组件:https://components.xamarin.com/view/rxforxamarin

3 个答案:

答案 0 :(得分:2)

var uiThread = SynchronizationContext.Current;

Observable
    .Interval(TimeSpan.FromMilliseconds(2500))
    .SubscribeOn(XXX)
    .ObserveOn(uiThread)
    .Subscribe( t => SendCounter(t), e => HandleException(e));

答案 1 :(得分:1)

确保观察主线程,以便直接影响视图。

答案 2 :(得分:0)

如果您正在使用ReactiveUI,请使用您的代码,例如:

searchButton
.SelectMany(async x => await executeSearch(x))
.ObserveOn(RxApp.MainThreadScheduler)
.ToProperty(this, x => x.SearchResults, out searchResults);

ReactiveUI handbook