Puffern Sie Daten vom Datenbankcursor, während die Benutzeroberfläche anspricht

Ich habe einen Datenbankkatalog, der gefüllt ist, und einen Cursor, der zum Abrufen von Objekten verwendet werden kann. Dieser Katalog kann natürlich sehr umfangreich sein und ich würde ihn gerne benutzenReactiveUI um die Daten zu puffern, während die Benutzeroberfläche datengebunden und ansprechbar bleibt. Ich folgte den SchrittenHier übersetzen meineIEnumerable In einIObservable, wie hier gezeigt:

public class CatalogService
{
   ...

   public IObservable<DbObject> DataSource
   {
        get
        {
            return Observable.Create<DbObject>(obs =>
            {
                var cursor = Database.Instance.GetAllObjects();
                var status = cursor.MoveToFirst();

                while (status == DbStatus.OK)
                {
                    var dbObject= Db.Create(cursor);
                    obs.OnNext(dbObject);

                    status = cursor.MoveToNext();
                }

                obs.OnCompleted();

                return Disposable.Empty;
            });
        }
    }
}

Meiner Ansicht nach Klasse (speziell dieLoaded&nbsp;Ich abonniere die Datenquelle und verwende die Puffermethode in der Hoffnung, dass die Benutzeroberfläche nicht mehr reagiert.

    public ObservableCollection<DbObject> DbObjects { get; set; }

    private async void OnLoad(object sender, RoutedEventArgs e)
    {
        var observableData = CatalogService.Instance.DataSource.Publish();
        var chunked = observableData.Buffer(TimeSpan.FromMilliseconds(100));
        var dispatcherObs = chunked.ObserveOnDispatcher(DispatcherPriority.Background);
        dispatcherObs.Subscribe(dbObjects =>
        {
            foreach (var dbObject in dbObjects)
            {
                DbObjects.Add(dbObject);
            }
        });

        await Task.Run(() => observableData.Connect());
        await dispatcherObs.ToTask();
    }

Das Ergebnis ist leider das Gegenteil. Wenn meine Ansichtssteuerung (die eine einfache enthältListBox&nbsp;datengebunden an dieDbObjects&nbsp;Eigenschaft) geladen wird, werden keine Daten angezeigt, bis der gesamte Katalog aufgezählt wurde. Erst dann wird die Benutzeroberfläche aktualisiert.

Ich bin neu bei ReactiveUI, aber ich bin mir sicher, dass es für die anstehende Aufgabe geeignet ist. Hat jemand irgendwelche Vorschläge oder Hinweise, wenn ich es falsch verwende?