Comment puis-je mettre à jour l'interface utilisateur lorsque Observable.Context n'est pas disponible?

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

  •  21-09-2019
  •  | 
  •  

Question

J'ai une application WinFrom, utilisez la méthode synchrone pour télécharger la chaîne à partir d'une URL, et Rx ToAsync Méthode pour le rendre asynchrone et obtenir le résultat observable, et lorsque le résultat que je vient le montrer sur le formulaire.

Hier, je mis à jour Rx à la dernière version, et il a été dit que « Observable ne contient pas de définition du contexte ». J'ai essayé un commentaire de cette ligne, les codes ont lancé une exception « opération de la Croix-fil non valide: contrôle « tbx_Reference » accessible à partir d'un autre thread que le thread il a été créé. »

Je veux montrer le résultat en utilisant la méthode asynchrone abonner. 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;
    }
Était-ce utile?

La solution

Pour votre déclaration de retour, essayez:

return results.ObserveOnDispatcher();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top