Frage

Ich baue Observablen über dem auf Geolocator und Ereignisse müssen im UI-Thread abonniert werden.

Ist ObserveOnDispatcher veraltet?

War es hilfreich?

Lösung

ObserveOnDispatcher() ist nicht veraltet, aber wie Paul sagt, ist es im Allgemeinen besser, einen expliziten Scheduler bereitzustellen, damit Sie einen einfügen können TestScheduler für Unit-Tests.

DispatcherScheduler.Current kann verwendet werden, um den Strom zu erhalten DispatcherScheduler - nicht .Instance, was Sinn macht, da es tatsächlich mehr als einen geben kann – obwohl die meisten Leute diesen bestimmten Weg nicht gehen sollten!

ObserveOnDispatcher() Und DispatcherScheduler sind im Windows Phone 8 Rx-Build vorhanden.Sie sind im rx-xaml Nuget-Paket, das xaml-plattformspezifische Elemente enthält – Sie hätten dies verpasst, wenn Sie es nur eingefügt hätten rx-main.

Konkret befinden sie sich in der System.Reactive.Windows.Threading.dll Montage. ObserveOnDispatcher() ist auf System.Reactive.Linq.DispatcherObservable Typ, und die Baugruppe hat auch System.Reactive.Concurrency.DispatcherScheduler.

Andere Tipps

Normalerweise schreibe ich:

.ObserveOn(DispatcherScheduler.Instance)

wenn ich es nicht benutze ReactiveUI.Wenn ja, dann ist es so

.ObserveOn(RxApp.MainThreadScheduler)

Der Unterschied besteht darin, dass in einem Unit-Test-Runner RxApp.MainThreadScheduler wird automatisch so manipuliert, dass es so ist CurrentThread, damit Ihre Unit-Tests bestanden werden – andernfalls bleiben sie alle hängen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top