我有以下代码:
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'
答案 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);