2016-07-02 6 views
0

Я получил следующий код:вид Update - Реактивные расширения

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

+1

Возможный дубликат [ошибка: оригинал потока, создавшего вид иерархии может коснуться ее взгляды на xamarin] (http://stackoverflow.com/questions/21162096/error-only-the-original-thread-that-created-a-view-hierarchy-can-touch-its-view) – SushiHangover

+0

не слишком уверен, как использовать ObserveOn() и SubcribeOn() самостоятельно в xamarin. попробовал Scheduler.NewThread, но он устарел? –

ответ

2
var uiThread = SynchronizationContext.Current; 

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

Это то, что мне нужно! –

+0

Что я могу подписаться? как использовать этот планировщик? –

+0

http://stackoverflow.com/questions/7579237/whats-the-difference-between-subscribe-and-observeon – xleon

1

Убедитесь, что вы замечаете в основном потоке, так что вы можете непосредственно влияют на представление.

0

Если вы используете ReactiveUI использовать такой код для например:

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

ReactiveUI handbook

Смежные вопросы