Como posso atualizar a interface do usuário quando observável.Context não está disponível?
-
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;
}
Solução
For your return statement, try:
return results.ObserveOnDispatcher();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow