Frage

Es ist schon ganz etwas Hype um das neue Reactive Framework- in .NET 4.0. Während ich denke, dass ich sein Grundkonzept undestood bin ich nicht ganz verkauft, dass es so nützlich ist. Können Sie mit einem guten Beispiel kommen (die auf halbe Strecke leicht zu verstehen ist), dass völlig zeigt die Macht und usefullness von Rx? Show etwas, das Leben so viel einfacher macht, wenn sie mit Rx getan.

War es hilfreich?

Lösung

Hier ist ein kurzes Beispiel. Programm eine Drag-Operation in einer vollständig deklarative Weise, mit LINQ auf Ereignisse.

   //Create an observable with the initial position and dragged points using LINQ to Events
   var mouseDragPoints = from md in e.GetMouseDown()
                           let startpos=md.EventArgs.GetPosition(e)
                           from mm in e.GetMouseMove().Until(e.GetMouseUp())
                           select new
                           {
                             StartPos = startpos,
                             CurrentPos = mm.EventArgs.GetPosition(e),
                           };

Und ziehen Sie eine Linie von startpos aktuellen pos

//Subscribe and draw a line from start position to current position  
            mouseDragPoints.Subscribe  
                (item =>  
                { 
                  //Draw a line from item.Startpos to item.CurrentPos
                }
                ); 

Wie Sie sehen können, gibt es keine Event-Handler alle über die Orte, noch boolean Variablen für den Zustand zu verwalten.

Wenn Sie sind neugierig auf diese GetEventName () -Methoden, was darauf hindeutet Sie diesen gesamten Artikel zu lesen und den Quellcode und mit ihm spielen herunterladen.

es hier zu lesen und spielen mit der Quelle >>

Andere Tipps

Ich schrieb eine Demo-Schritt-für-Schritt auf meinem Blog vor kurzem: http://blog.andrei.rinea.ro/2013/06/01/bing-it-on-reactive-extensions-story-code-and- slides /

Ich bin im Grunde eine kleine app in WPF mit Rx und Bing Search Aufbau:

eingeben Bild Beschreibung hier

Die App wird warten, bis Sie die Eingabe beenden und dann eine Asynchron-Suche und die Ergebnisse präsentieren. Wenn bevor die Ergebnisse kamen Sie eine neue Suche ausgeben wird es automatisch die bestehende Suche fallen.

Sie können eine Suche erzwingen (die Wartezeit überspringen) durch ENTER oder die Taste „Go!“ Taste und kann die laufende Suche durch Drücken der Clear-Taste stoppen. Es gibt ein Besetztanzeige und einige Fehlerbehandlung (falls das Netzwerk ausfällt, zum Beispiel).

Schwerpunktthemen behandelt:

  • Erstellen eines beobachtbaren von einem Ereignis (Textchanged, Button.Click usw.)
  • Async Delegierten (async Suche)
  • TakeUntil Erweiterung
  • DistinctUntilChanged Erweiterung (einschließlich kundenspezifischer Equals)
  • Merge Erweiterung
  • Drosselklappen Erweiterung
  • ObserveOn Erweiterung (UI Thread sync-ing)

.. und mehr!

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