Question

Il y a eu un certain battage médiatique autour de la nouvelle cadre réactive dans .NET 4.0. Bien que je pense que j'undestood son concept de base, je ne suis pas complètement vendu qu'il est très utile. Pouvez-vous trouver un bon exemple (qui est à mi-chemin facile à comprendre) qui montre tout à fait de la puissance et de usefullness Rx? Montrer quelque chose qui rend la vie tellement plus facile lorsque vous avez terminé avec Rx.

Était-ce utile?

La solution

Voici un exemple rapide. Programmez une opération de glissement d'une manière totalement déclarative, en utilisant LINQ aux événements.

   //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),
                           };

Et tracer une ligne de startpos pos courant

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

Comme vous pouvez le voir, il n'y a pas de gestionnaires d'événements partout dans les lieux, ni les variables booléennes pour la gestion de l'état.

Si vous êtes curieux de savoir les GetEventName () méthodes, vous suggère de lire l'intégralité de cet article et télécharger le code source et jouer avec.

Lisez ici et jouer avec la source >>

Autres conseils

J'ai écrit une étape par étape démo sur mon blog récemment: http://blog.andrei.rinea.ro/2013/06/01/bing-it-on-reactive-extensions-story-code-and- diapositives /

Je suis essentiellement la construction d'une petite application en WPF avec Rx et Bing Rechercher:

entrer image description ici

L'application attendra jusqu'à ce que vous arrêtez de taper, puis faites une recherche async et de présenter les résultats. Si avant que les résultats sont venus vous émettez une autre recherche, il baissera automatiquement la recherche existante.

Vous pouvez forcer une recherche (sauter le temps d'attente) en appuyant sur ENTER ou « Go! » bouton et peut arrêter une recherche en cours en appuyant sur le bouton Effacer. Il y a un indicateur d'occupation et une gestion des erreurs (en cas de panne du réseau, par exemple).

Principaux thèmes traités:

  • Création d'une observable d'un événement (TextChanged, Button.Click etc)
  • délégué Async (async recherche)
  • l'extension TakeUntil
  • l'extension DistinctUntilChanged (y compris sur mesure Equals)
  • Extension de fusion
  • Extension de gaz
  • extension ObserveOn (pour la synchronisation-ing thread d'interface utilisateur)

.. et plus!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top