Wie kann ich die Benutzeroberfläche aktualisieren, wenn beobachtbar.context nicht verfügbar ist?

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

  •  21-09-2019
  •  | 
  •  

Frage

Ich habe eine Winfrom -App, verwende synchrone Methode, um die Zeichenfolge aus einer URL herunterzuladen und die RX Toasync -Methode zu verwenden, um sie asynchron zu machen und das beobachtbare Ergebnis zu erhalten. Wenn das Ergebnis kommt, zeige ich sie auf dem Formular.

Gestern habe ich RX auf die neueste Veröffentlichung aktualisiert, und es wurde mitgeteilt, dass "beobachtbar keine Kontextdefinition enthält". Ich habe versucht, diese Zeile zu kommentieren, die Codes warf eine Ausnahme, die "Cross-Thread-Operation nicht gültig: Control 'Tbx_referenz" von einem anderen Thread als dem Thread zugegriffen wurde, auf dem er erstellt wurde. "

Ich möchte das asynchrone Ergebnis mithilfe der Abonnement -Methode zeigen. Wie kann ich dieses Problem beheben? vielen Dank.

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;
    }
War es hilfreich?

Lösung

Versuchen Sie für Ihre Rückgabeerklärung:

return results.ObserveOnDispatcher();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top