static void Main(string[] args) { // Record the current process ID using (var p = Process.GetCurrentProcess()) { processId = p.Id; } const string remoteObjectName = "OutOfProcDemoObject"; // Acquire the Running Object Table instance using (var rot = new RunningObjectTable()) { if (args.Length == 0 || args[0].Equals("server")) { Log($"Server running..."); // Register object instance in Running Object Table var server = new NetServer.Server(); using (rot.Register(remoteObjectName, server)) { var thisAssembly = Assembly.GetEntryAssembly().Location; Log("Launching client..."); using (var client = Process.Start(thisAssembly, "client")) { client.WaitForExit(); } } } else if (args[0].Equals("client")) { Log($"Client running..."); // Acquire remote object object remoteObject = rot.GetObject(remoteObjectName); var server = (OutOfProcDemo.IServer)remoteObject; Log("Calling remote object..."); var pi = server.ComputePi(); Log($"\u03C0 = {pi}"); Log("Press any key to continue..."); Console.ReadKey(); } else { throw new ArgumentException("Invalid demo mode"); } } }
public RevokeRegistration(RunningObjectTable rot, int regCookie) { this.rot = rot; this.regCookie = regCookie; }