J'ai une application WinFrom, utilisez une méthode synchrone pour télécharger une chaîne à partir d'une URL, et utilisez la méthode Rx ToAsync pour la rendre asynchrone et obtenir le résultat observable, et quand le résultat arrive je l'affiche sur le formulaire.Comment puis-je mettre à jour l'interface utilisateur lorsque Observable.Context n'est pas disponible?
Hier, j'ai mis à jour Rx à la dernière version, et il a été dit que "Observable ne contient pas de définition de contexte". J'ai essayé de commenter cette ligne, les codes ont jeté une exception que "opération Cross-thread pas valide: Contrôle 'tbx_Reference' accédé à partir d'un thread autre que le fil sur lequel il a été créé."
Je souhaite afficher le résultat asynchrone à l'aide de la méthode Subscribe. Comment puis-je résoudre ce problème? Merci beaucoup.
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;
}
Il fonctionne après que je l'utilise results.ObserveOnDispatcher(). Merci beaucoup! –
Très heureux d'aider! –