PageRenderTime 49ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/FromEvent/FromEvent/Form1.cs

https://github.com/M201370367/myGithub
C# | 68 lines | 55 code | 11 blank | 2 comment | 0 complexity | aa4f856af551e56449ad506bb9b3ea3f MD5 | raw file
  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.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using System.Reactive;
  11. using System.Reactive.Linq;
  12. using System.Reactive.Threading;
  13. using System.Reactive.Concurrency;
  14. using System.Reactive.Disposables;
  15. using System.Windows;
  16. using System.Windows.Threading;
  17. using System.Reactive.Joins;
  18. using System.Reactive.PlatformServices;
  19. using System.Reactive.Subjects;
  20. using Microsoft.VisualBasic;
  21. using Microsoft.VisualBasic.Devices;
  22. using System.Threading;
  23. namespace FromEvent
  24. {
  25. public partial class Form1 : Form
  26. {
  27. public Form1()
  28. {
  29. InitializeComponent();
  30. }
  31. private void Form1_Load(object sender, EventArgs e)
  32. {
  33. var start = Observable.FromEventPattern<EventArgs>(button1, "Click");
  34. var stop = Observable.FromEventPattern<EventArgs>(button2, "Click");
  35. var clock2 = Observable.Interval(TimeSpan.FromSeconds(1)).SubscribeOn(Scheduler.NewThread).TakeUntil(stop);
  36. start.Subscribe(x =>{
  37. var clock = Observable.Interval(TimeSpan.FromSeconds(1)).Select((t, index) => Thread.CurrentThread.ManagedThreadId).TakeUntil(stop);
  38. clock.SubscribeOn(Scheduler.NewThread).ObserveOn(DispatcherScheduler.Instance).Subscribe(timeIndex =>
  39. label1.Text = String.Format("{0}", timeIndex.ToString()));
  40. clock2.ObserveOn(this).Subscribe(timeIndex =>
  41. label2.Text = String.Format("{0}", timeIndex.ToString()));
  42. });
  43. //clock.ObserveOn(DispatcherScheduler.Instance).Subscribe(timeIndex =>
  44. // label1.Text = String.Format("{0}" , timeIndex.Time));
  45. }
  46. }
  47. class TimeIndex
  48. {
  49. public TimeIndex(int index, DateTimeOffset time)
  50. {
  51. Index = index;
  52. Time = time;
  53. }
  54. public int Index { get; set; }
  55. public DateTimeOffset Time { get; set; }
  56. }
  57. }