Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/rx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'Rx/NET/Samples/HOL/CS/Excercise5/Step05/Program.cs')
-rw-r--r--Rx/NET/Samples/HOL/CS/Excercise5/Step05/Program.cs41
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);
+ }
+ }
+}