2016-07-02 5 views
0

내가 다음 코드있어했습니다 XXX, YYY는 Schedulers입니다업데이트보기 - 반응성 확장

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

.

Inside 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

너무 잘 모르겠습니다. xamarin에서 ObserveOn() 및 SubcribeOn()을 직접 사용하는 방법. 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-subscribeon-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