Converting entities to streams (IObservable<T>)
The following constructs can be converted to a sequence source. IObservable<T> can be generated from the following:
- Events
- Delegates
- Tasks
IEnumerable<T>- Asynchronous programming model
Converting events into stream
We have now understood how one can convert an IEnumerable<T>-based pull program to an IObservable<T>/IObserver<T>-based push program. In real life, the event source is not as simple as we found in the number stream example given previously. Let us see how we can convert a MouseMove event into a stream with a small WinForms program:
static void Main()
{
var mylabel = new Label();
var myform = new Form { Controls = { mylabel } };
IObservable<EventPattern<MouseEventArgs>>
mousemove =
Observable.
FromEventPattern<MouseEventArgs>(myform, "MouseMove");
mousemove.Subscribe(
(evt)=>{mylabel.Text = evt.EventArgs...