Как я могу обновить пользовательский интерфейс, когда Observable.Context недоступен? - PullRequest
1 голос
/ 24 декабря 2009

У меня есть приложение WinFrom, я использую синхронный метод для загрузки строки из URL-адреса и использую метод Rx ToAsync, чтобы сделать его асинхронным и получить наблюдаемый результат, и когда результат приходит, я показываю его в форме.

Вчера я обновил Rx до последней версии, и мне сказали, что «Observable не содержит определения Context». Я попытался прокомментировать эту строку, коды выдали исключение, что «Операция между потоками недопустима: доступ к элементу управления« tbx_Reference »получен из потока, отличного от потока, в котором он был создан».

Я хочу показать асинхронный результат, используя метод Subscribe. Как я могу решить эту проблему? большое спасибо.

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;
    }

1 Ответ

3 голосов
/ 26 декабря 2009

Для вашего заявления возврата, попробуйте:

return results.ObserveOnDispatcher();
...