Question

EDIT: Merci pour le lien vers le wiki, je pense que depuis sa il a déjà commencé, il est plus facile d'y aller pour le vérifier. Cependant, la question ici est aussi bon, pour que les gens qui ne sont pas dans les forums msdn se connaître sur le wiki et où il est.

Court Question:

Avez-vous un exemple de code Rx qui pourrait aider les gens à mieux le comprendre?

Randonnées pédestres longue à la question cachée:

Maintenant que le Cadre Rx a été libéré, je pense que beaucoup d'entre nous sont intéressés à obtenir les bits et les essayer. Malheureusement, il y a vraiment pas beaucoup d'exemples là-bas (après une recherche exhaustive, je suis presque convaincu Rx ne vise qu'à faire glisser facilement sur les applications WPF).

Je ne me souviens pas exactement où il était que je l'ai lu ou entendu (je l'ai regardé de nombreux blogs et vidéos) que l'équipe Rx semble être intéressé à faire la série 101 ... quand ils assez de temps de le faire ... qui aspire à peu près pour ceux qui veulent comprendre et jouer avec elle maintenant (et je veux dire, ce développeur auto respecté ne se sent pas comme un enfant avec un nouveau jouet quand une nouvelle technologie comme celui-ci. vient vers le haut).

J'ai personnellement été donner un essai maintenant, mais wow il y a quelques concepts fous dans ... juste d'avoir des noms de méthodes comme Materialise et Zip me fait penser à téléporteurs et d'autres choses de Retour vers le futur .

Alors, je pense que ce serait bien si ceux avec une meilleure compréhension, ont aidé à construire une collection d'exemples, ala 101 Exemples Linq qui va de l'utilisation de base à des choses plus complexes, et à peu près couvrir toutes les méthodes et leur utilisation, d'une manière pratique (peut-être avec un peu de théorie aussi, en particulier car ce genre de concepts sans doute nécessaire, il)

Je trouve bien que la MS devs prennent le temps de nous donner matériel comme ça, mais je pense aussi que cette communauté est assez bon pour commencer à construire notre propre matériel, ne pas vous?

Était-ce utile?

La solution

j'ai eu des pensées similaires il y a quelques jours. Nous avons commencé nos propres « 101 échantillons Rx » comme post dans le forum MSDN Rx, mais nous avons depuis déménagé dans un format Wiki. S'il vous plaît ne hésitez pas à venir et d'ajouter vos propres échantillons!

101 échantillons Rx sur le wiki Rx

Autres conseils

Pour commencer - est ici une application de dessin simple, de sorte que lorsque l'utilisateur fait glisser, on trace une ligne rouge de la position initiale de la souris vers le bas à l'emplacement actuel, et aussi une tache bleue à l'emplacement actuel. Ceci est le résultat du piratage de ma dernière semaine sur Rx

Une démo WPF Dessin

Et voici le code source.

//A draw on drag method to perform the draw
void DrawOnDrag(Canvas e)
        {

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


            //Subscribe and draw a line from start position to current position
            mouseDragPoints.Subscribe
                (item =>
                {
                    e.Children.Add(new Line()
                    {
                        Stroke = Brushes.Red,
                        X1 = item.StartPos.X,
                        X2 = item.CurrentPos.X,
                        Y1 = item.StartPos.Y,
                        Y2 = item.CurrentPos.Y
                    });

                    var ellipse = new Ellipse()
                    {
                        Stroke = Brushes.Blue,
                        StrokeThickness = 10,
                        Fill = Brushes.Blue
                    };
                    Canvas.SetLeft(ellipse, item.CurrentPos.X);
                    Canvas.SetTop(ellipse, item.CurrentPos.Y);
                    e.Children.Add(ellipse);
                }
                );
        }

Lire mon post avec plus explication ici et Télécharger le code source ici

Hope this helps

Une autre ressource utile peut être le Reactive Extensions (Rx) kôans : 55 exemples progressifs pour aider vous apprenez Rx

Je lis http://www.introtorx.com , qui, comme son nom l'indique semble une introduction concise. Il semble y avoir beaucoup de (très basiques) exemples, étape par étape, en utilisant principalement la console pour imprimer trucs.

Voici ma variation sur drag & drop échantillon par Wes Dyer , pour Windows Forms (je ferais EnableDragging une méthode d'extension, sans doute):

    public Form2()
    {
        InitializeComponent();

        EnableDragging(pictureBox1);
        EnableDragging(button1);
        EnableDragging(this);
    }

    private void EnableDragging(Control c)
    {
        // Long way, but strongly typed.
        var downs = from down in Observable.FromEvent<MouseEventHandler, MouseEventArgs>(
                        eh => new MouseEventHandler(eh), 
                        eh => c.MouseDown += eh,  
                        eh => c.MouseDown -= eh)
                    select new { down.EventArgs.X, down.EventArgs.Y };

        // Short way.
        var moves = from move in Observable.FromEvent<MouseEventArgs>(c, "MouseMove")
                    select new { move.EventArgs.X, move.EventArgs.Y };

        var ups = Observable.FromEvent<MouseEventArgs>(c, "MouseUp");

        var drags = from down in downs
                    from move in moves.TakeUntil(ups)
                    select new Point { X = move.X - down.X, Y = move.Y - down.Y };

        drags.Subscribe(drag => c.SetBounds(c.Location.X + drag.X, c.Location.Y + drag.Y, 0, 0, BoundsSpecified.Location));
    }  

Un peu en retard, mais si quelqu'un de nouveau tombe sur cette question, http://rxmarbles.com/ offre une façon très agréable de visualiser les opérateurs.

Stock Viewer par exemple sur Github entrer la description d'image ici

  1. StreamProvider extrait des données à partir d'un serveur et génère un flux IObservable Rx.NET.
  2. StreamAggregator regroupe tous les flux IObservable et reproduit le résultat dans un filetage centrale de traitement.
  3. Les vues filtrent le flux unique et en double le résultat dans leurs propres fils pour l'affichage.

Tous les StreamProviders, StreamAggregate et vues courir dans leurs propres fils. Ceci est également un modèle de thread typique des applications d'actions réelles visualisation.

Cet exemple peut aussi être un squelette simple test de performance pour WPF DataGrid. Il calcule les tiques / seconde traitées et affiche sur la vue.

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