我有以下代码:
Observable.Interval (TimeSpan.FromMilliseconds (2500) .SubscribeOn (XXX) .ObserveOn(多).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
var uiThread = SynchronizationContext.Current;
Observable
.Interval(TimeSpan.FromMilliseconds(2500))
.SubscribeOn(XXX)
.ObserveOn(uiThread)
.Subscribe( t => SendCounter(t), e => HandleException(e));
确保你在主线程上观察,这样你就可以直接影响视图
如果你正在使用ReactiveUI使用你的代码像这样,例如:
searchButton
.SelectMany(async x => await executeSearch(x))
.ObserveOn(RxApp.MainThreadScheduler)
.ToProperty(this, x => x.SearchResults, out searchResults);
ReactiveUI手册