using System; using System.Drawing; using System.Reactive.Linq; using System.Windows.Forms; namespace RxMouseClient { partial class Program { [STAThread] static void Main(string[] args) { Console.WriteLine("Client"); string server; int port; ParseArgs(args, out server, out port); var points = Remoting(server, port); var frm = new Form(); var closed = Observable.FromEventPattern(frm, "FormClosed"); frm.Load += (o, e) => { var g = frm.CreateGraphics(); points.TakeUntil(closed).ObserveOn(frm).Subscribe(pt => { g.DrawEllipse(Pens.Red, pt.X, pt.Y, 1, 1); }); }; Application.Run(frm); } static void ParseArgs(string[] args, out string server, out int port) { port = 9090; server = "localhost"; if (args.Length >= 1) { server = args[0]; if (args.Length == 2) { port = int.Parse(args[1]); } } } } }