Ich habe einen SlidingWindow () -Operator für reaktive Erweiterungen erstellt, weil ich Dinge wie gleitende Durchschnitte usw. einfach überwachen möchte. Als einfaches Beispiel möchte ich Mausereignisse abonnieren, aber jedes Mal, wenn ich ein Ereignis erhalte die letzten drei (anstatt auf jedes dritte Ereignis zu warten, um die letzten drei zu erhalten). Das ist der Grund, warum die Window-Überladungen, die ich gefunden habe, mir anscheinend nicht das geben, was ich aus der Box brauche.
Das ist, was mir eingefallen ist. Ich befürchte, dass es angesichts der häufigen List-Operationen nicht die performanteste Lösung ist:
%Vor%Es kann so genannt werden:
%Vor%Aber zu meiner großen Überraschung, anstatt die erwarteten Ergebnisse zu erhalten
%Vor%Ich erhalte die Ergebnisse
%Vor%Alle Einsichten würden sehr geschätzt werden!
Versuchen Sie es stattdessen - ich muss sitzen und über seine relative Leistung nachdenken, aber es ist mindestens wahrscheinlich so gut und viel einfacher zu lesen:
Prüfstand:
%Vor%Ausgabe:
%Vor% EDIT: Abgesehen davon, ich finde mich zwanghaft .Publish().RefCount()
ing immer seit einmal verbrannt, indem Sie es nicht tun ... Ich glaube nicht, dass es hier unbedingt erforderlich ist, tho.
BEARBEITEN für yzorg:
Wenn Sie die Methode so erweitern, werden Sie das Laufzeitverhalten klarer sehen:
%Vor%Wenn Sie Ihren Originaltest mit einem Argument von 3 zum Zählen verwenden, erhalten Sie die gewünschten Ergebnisse:
%Vor%Testen wie folgt:
%Vor%Ausgabe:
%Vor%Tags und Links system.reactive