2009-11-18 14 views
8

C'è stato un bel po 'di hype attorno al nuovo Reactive Framework in .NET 4.0. Mentre penso di aver capito il suo concetto di base, non sono completamente venduto che sia così utile. Puoi venire con un buon esempio (che è a metà strada facile da capire) che mostra totalmente la potenza e l'utilità di Rx? Mostra qualcosa che rende la vita molto più semplice quando viene eseguita con Rx.Framework reattivo per esempi .NET che dimostrano la sua utilità

+0

Vedere un esempio qui: http://stackoverflow.com/questions/1596158/good-introduction-to-the-net-reactive-framework/1749252#1749252 – Benjol

+1

Quando si spinge utile? Quando sta tirando utile? –

risposta

9

Ecco un breve esempio. Programmare un'operazione di trascinamento in modo completamente dichiarativo, utilizzando LINQ per gli eventi.

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

e tracciare una linea da startpos a pos attuali

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

Come si può vedere, non ci sono gestori di eventi in tutto i luoghi, né le variabili booleane per la gestione dello stato.

Se siete curiosi di conoscere quei metodi GetEventName(), suggerendo di leggere l'intero articolo e scaricare il codice sorgente e giocarci.

Read it here and play with the source >>

+0

Risposta molto dettagliata ma non così facile da capire. Dovrò fare un po 'di lettura ... – bitbonk

+0

La domanda era solo per fare un esempio. Ecco una buona lettura se vuoi toccare le basi - http://amazedsaint.blogspot.com/2009/11/systemreactive-or-net-reactive.html – amazedsaint

0

ho scritto una demo step-by-step sul mio blog di recente: http://blog.andrei.rinea.ro/2013/06/01/bing-it-on-reactive-extensions-story-code-and-slides/

praticamente sto costruendo una piccola applicazione in WPF con Rx e Bing Cerca:

enter image description here

L'applicazione attenderà fino a quando non si interrompe la digitazione e quindi si esegue una ricerca asincrona e si presentano i risultati. Se prima che i risultati arrivassero emetterai un'altra ricerca, la ricerca esistente verrà automaticamente interrotta.

È possibile forzare una ricerca (per saltare il tempo di attesa) premendo ENTER o "Vai!" pulsante e può interrompere una ricerca in corso premendo il pulsante Cancella. C'è un indicatore di occupato e un po 'di gestione degli errori (nel caso in cui la rete si interrompa, per esempio).

Temi principali trattati:

  • Creazione di un osservabile da un evento (TextChanged, Button.Click ecc)
  • Asincrono delegato (ricerca asincrona)
  • estensione TakeUntil
  • estensione DistinctUntilChanged (tra cui personalizzato Uguale)
  • Estensione di unione
  • Estremità dell'acceleratore
  • Estensione ObserveOn (per sincronizzazione thread UI)

.. e altro ancora!

Problemi correlati