2009-12-24 4 views
1

저는 WinFrom App을 가지고 있습니다. 동기 메서드를 사용하여 URL에서 문자열을 다운로드하고 Rx ToAsync Method를 사용하여 비동기로 만들고 관찰 가능한 결과를 얻습니다. 그 결과가 폼에 표시됩니다.Observable.Context를 사용할 수없는 경우 어떻게 UI를 업데이트 할 수 있습니까?

어제 저는 Rx를 최신 릴리스로 업데이트했으며 "Observable에는 컨텍스트 정의가 없습니다"라는 메시지가 나왔습니다. 나는이 줄을 주석 처리하려고 시도했다. 코드는 "크로스 - 스레드 연산이 유효하지 않다 : 컨트롤 'tbx_Reference'가 스레드가 아닌 스레드에서 액세스되었다는 예외를 던졌다."

구독 방법을 사용하여 비동기 결과를 표시하려고합니다. 이 문제를 어떻게 해결할 수 있습니까? 매우 감사합니다.

public static IObservable<TResult> DoWorkAsync(TParameter parameter, 
     Func<TParameter,TResult> actionSync) 
    { 
     Observable.Context = SynchronizationContext.Current; 

     Func<TParameter, IObservable<TResult>> ActionAsync = actionSync.ToAsync(); 

     IObservable<TResult> results = from result in ActionAsync(parameter) 
             select result; 

     return results; 
    } 

답변

3

반품 문의 경우, 시도 :

return results.ObserveOnDispatcher(); 
+0

그것은 내가 results.ObserveOnDispatcher을 사용 후() 작동합니다. 대단히 감사합니다! –

+0

도와 주셔서 매우 기쁩니다! –

관련 문제