Program.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using System;
  2. using System.Drawing;
  3. using System.Reactive.Linq;
  4. using System.Windows.Forms;
  5. namespace RxMouseClient
  6. {
  7. partial class Program
  8. {
  9. [STAThread]
  10. static void Main(string[] args)
  11. {
  12. Console.WriteLine("Client");
  13. string server;
  14. int port;
  15. ParseArgs(args, out server, out port);
  16. var points = Remoting(server, port);
  17. var frm = new Form();
  18. var closed = Observable.FromEventPattern(frm, "FormClosed");
  19. frm.Load += (o, e) =>
  20. {
  21. var g = frm.CreateGraphics();
  22. points.TakeUntil(closed).ObserveOn(frm).Subscribe(pt =>
  23. {
  24. g.DrawEllipse(Pens.Red, pt.X, pt.Y, 1, 1);
  25. });
  26. };
  27. Application.Run(frm);
  28. }
  29. static void ParseArgs(string[] args, out string server, out int port)
  30. {
  31. port = 9090;
  32. server = "localhost";
  33. if (args.Length >= 1)
  34. {
  35. server = args[0];
  36. if (args.Length == 2)
  37. {
  38. port = int.Parse(args[1]);
  39. }
  40. }
  41. }
  42. }
  43. }