Form1.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Reactive.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11. using PortableLibraryProfile7;
  12. namespace WinFormsApp45
  13. {
  14. public partial class Form1 : Form
  15. {
  16. public Form1()
  17. {
  18. InitializeComponent();
  19. }
  20. private void button1_Click(object sender, EventArgs e)
  21. {
  22. var clock = MyExtensions.GetClock();
  23. var input = Observable.FromEventPattern(textBox1, "TextChanged").Select(evt => ((TextBox)evt.Sender).Text).Throttle(TimeSpan.FromSeconds(.5)).DistinctUntilChanged();
  24. var xs = from word in input.StartWith("")
  25. from length in Task.Run(async () => { await Task.Delay(250); return word.Length; })
  26. select length;
  27. var res = xs.CombineLatest(clock, (len, now) => now.ToString() + " - Word length = " + len);
  28. res.ObserveOn(this).Subscribe(s =>
  29. {
  30. label1.Text = s.ToString();
  31. });
  32. }
  33. }
  34. }