diff options
Diffstat (limited to 'Rx/NET/Samples/HOL/CS/Excercise5/Step05/Program.cs')
-rw-r--r-- | Rx/NET/Samples/HOL/CS/Excercise5/Step05/Program.cs | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/Rx/NET/Samples/HOL/CS/Excercise5/Step05/Program.cs b/Rx/NET/Samples/HOL/CS/Excercise5/Step05/Program.cs new file mode 100644 index 0000000..f931cee --- /dev/null +++ b/Rx/NET/Samples/HOL/CS/Excercise5/Step05/Program.cs @@ -0,0 +1,41 @@ +using System; +using System.Reactive; +using System.Reactive.Linq; +using System.Windows.Forms; + +namespace Excercise5 +{ + class Program + { + static void Main() + { + var txt = new TextBox(); + + var frm = new Form() + { + Controls = { txt } + }; + + var input = (from evt in Observable.FromEventPattern(txt, "TextChanged") + select ((TextBox)evt.Sender).Text) + .LogTimestampedValues(x => Console.WriteLine("I: " + x.Timestamp.Millisecond + " - " + x.Value)) + .Throttle(TimeSpan.FromSeconds(1)) + .LogTimestampedValues(x => Console.WriteLine("T: " + x.Timestamp.Millisecond + " - " + x.Value)) + .DistinctUntilChanged(); + + using (input.Subscribe(inp => Console.WriteLine("User wrote: " + inp))) + { + Application.Run(frm); + } + + } + } + + public static class MyExtensions + { + public static IObservable<T> LogTimestampedValues<T>(this IObservable<T> source, Action<Timestamped<T>> onNext) + { + return source.Timestamp().Do(onNext).Select(x => x.Value); + } + } +} |