1 using System; 2 using System.Drawing; 3 using System.Reactive.Linq; 4 using System.Windows.Forms; 5 6 namespace RxMouseServer 7 { 8 partial class Program 9 { 10 [STAThread] Main(string[] args)11 static void Main(string[] args) 12 { 13 Console.WriteLine("Server"); 14 15 int port; 16 ParseArgs(args, out port); 17 18 var observer = Remoting(port); 19 20 var frm = new Form(); 21 22 frm.Load += (o, e) => 23 { 24 var g = frm.CreateGraphics(); 25 26 var mme = (from mm in Observable.FromEventPattern<MouseEventArgs>(frm, "MouseMove") 27 select mm.EventArgs.Location) 28 .DistinctUntilChanged() 29 .Do(pt => 30 { 31 g.DrawEllipse(Pens.Red, pt.X, pt.Y, 1, 1); 32 }); 33 34 mme.Subscribe(observer); 35 }; 36 37 Application.Run(frm); 38 } 39 ParseArgs(string[] args, out int port)40 static void ParseArgs(string[] args, out int port) 41 { 42 port = 9090; 43 44 if (args.Length == 1) 45 { 46 port = int.Parse(args[0]); 47 } 48 } 49 } 50 } 51