Como posso atualizar a interface do usuário quando observável.Context não está disponível?

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

  •  21-09-2019
  •  | 
  •  

Pergunta

Eu tenho um aplicativo WINFROM, uso o método síncrono para baixar string de um URL e usar o método RX Toasync para torná -lo assíncrono e obter o resultado observável, e quando o resultado ocorre, eu o mostro no formulário.

Ontem, atualizei o RX para o lançamento mais recente e foi informado de que "o observável não contém uma definição de contexto". Tentei comentar essa linha, os códigos fizeram uma exceção de que "a operação cruzada não é válida: controle 'tbx_reference' acessado a partir de um segmento que não seja o segmento em que foi criado".

Quero mostrar o resultado assíncrono usando o método de inscrição. Como posso resolver este problema? Muito obrigado.

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;
    }
Foi útil?

Solução

For your return statement, try:

return results.ObserveOnDispatcher();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top