Come posso aggiornare UI quando Observable.Context non è disponibile?
-
21-09-2019 - |
Domanda
Ho un App WinFrom, utilizzare il metodo sincrono per scaricare stringa da un URL, e l'uso Rx metodo ToAsync per rendere asincrona e ottenere il risultato osservabile, e quando il risultato viene mostro sul modulo.
Ieri, ho aggiornato Rx alla versione più recente, ed è stato detto che "osservabile non contiene una definizione di contesto". Ho provato a commento di questa linea, i codici ha generato un'eccezione che "operazione cross-thread non valida:. Controllo 'tbx_Reference' si accede da un thread diverso dal thread è stato creato su"
Voglio mostrare il risultato utilizzando il metodo asincrono Sottoscrivi. Come posso risolvere questo problema? grazie mille.
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;
}
Soluzione
Per la vostra istruzione return, provare:
return results.ObserveOnDispatcher();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow