Pregunta

Ha habido bastante expectación en torno a la nueva Marco reactiva en .NET 4.0. Si bien creo que undestood su concepto básico no estoy vendido por completo que es tan útil. Se puede llegar a un buen ejemplo (que está a medio camino fácil de entender) que muestra totalmente de la potencia y de la UTILIDAD Rx? Mostrar algo que hace la vida mucho más fácil cuando se hace con Rx.

¿Fue útil?

Solución

Aquí está un ejemplo rápido. Programar una operación de arrastre de una manera totalmente declarativa, utilizando LINQ a los acontecimientos.

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

Y trazar una línea desde pos_comienzo a POS actual

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

Como se puede ver, no hay controladores de eventos de todo los lugares, ni las variables booleanas para la gestión del Estado.

Si eres curioso acerca de los GetEventName () métodos, se sugiere leer este artículo completo y descargar el código fuente y jugar con él.

Leer aquí y jugar con la fuente >>

Otros consejos

escribí un paso a paso de demostración en mi blog recientemente: http://blog.andrei.rinea.ro/2013/06/01/bing-it-on-reactive-extensions-story-code-and- diapositivas /

Estoy básicamente la construcción de una pequeña aplicación en WPF con Rx y Bing Búsqueda:

introducir descripción de la imagen aquí

La aplicación va a esperar hasta que deje de escribir y luego hace una búsqueda asíncrono y presentar los resultados. Si antes de que llegaran los resultados de búsqueda que se emite otro caerá automáticamente la búsqueda existente.

Puede forzar una búsqueda (para saltar el tiempo de espera) pulsando ENTER o el "Go!" botón y puede detener una búsqueda continua pulsando el botón Borrar. Hay un indicador de ocupado y un poco de control de errores (en caso de que la red se cae, por ejemplo).

Los temas principales cubiertos:

  • Creación de un observable a partir de un evento (TextChanged, Button.Click etc)
  • asíncrono delegado (búsqueda asíncrono)
  • extensión TakeUntil
  • extensión DistinctUntilChanged (incluida la costumbre es igual a)
  • Combinar extensión
  • extensión del acelerador
  • extensión ObserveOn (para sincronización-ción hilo UI)

.. y más!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top