Как я могу обновить пользовательский интерфейс при наблюдении. Контекст недоступен?

StackOverflow https://stackoverflow.com/questions/1957438

  •  21-09-2019
  •  | 
  •  

Вопрос

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

Вчера я обновил RX до последнего выпуска, и было сказано, что «наблюдаемый не содержит определения контекста». Я попробовал прокомментировать эту строку, коды бросили исключение, что «операция по перекрестной трубе не действительна: Control '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;
    }
Это было полезно?

Решение

For your return statement, try:

return results.ObserveOnDispatcher();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top