static void Main(string[] args) { //var regServices = new RegistrationServices(); //int cookie = regServices.RegisterTypeForComClients( // typeof(RegFreeCom.Implementations.SimpleObject), // RegistrationClassContext.LocalServer | RegistrationClassContext.RemoteServer, // RegistrationConnectionType.MultipleUse); //Console.WriteLine("Ready"); Console.ReadKey(); //regServices.UnregisterTypeForComClients(cookie); var t2 = new Thread(() => { _dispatcher = Dispatcher.CurrentDispatcher; Dispatcher.Run(); }); t2.SetApartmentState(ApartmentState.STA); t2.Start(); var wait = new SpinWait(); while (_dispatcher == null) { wait.SpinOnce(); } _dispatcher.Invoke(new Action(() => { _server = new SimpleObjectServer(_dispatcher); _server.Run(); Console.WriteLine("Server started"); })); // Start the GC timer to trigger GC every 5 seconds. // TO see to make .NET GC server, and we stop COM dispatch and stop process _gcTimer = new Timer(new TimerCallback(GarbageCollect), null, 5000, 5000); t2.Join(); }
static void Main(string[] args) { //var regServices = new RegistrationServices(); //int cookie = regServices.RegisterTypeForComClients( // typeof(RegFreeCom.Implementations.SimpleObject), // RegistrationClassContext.LocalServer | RegistrationClassContext.RemoteServer, // RegistrationConnectionType.MultipleUse); //Console.WriteLine("Ready"); Console.ReadKey(); //regServices.UnregisterTypeForComClients(cookie); var t2 = new Thread(() => { _dispatcher = Dispatcher.CurrentDispatcher; Dispatcher.Run(); }); t2.SetApartmentState(ApartmentState.STA); t2.Start(); var wait = new SpinWait(); while (_dispatcher == null) wait.SpinOnce(); _dispatcher.Invoke(new Action(() => { _server = new SimpleObjectServer(_dispatcher); _server.Run(); Console.WriteLine("Server started"); })); // Start the GC timer to trigger GC every 5 seconds. // TO see to make .NET GC server, and we stop COM dispatch and stop process _gcTimer = new Timer(new TimerCallback(GarbageCollect), null, 5000, 5000); t2.Join(); }