private void RegisterServer() { _context = SynchronizationContext.Current; var uiThreadScheduler = TaskScheduler.FromCurrentSynchronizationContext(); var dataServiceProvider = new FusionDataServiceProvider(_context, _globalFunctions as IGlobalFunctions); CreateDataServerFromConfig(dataServiceProvider); _ = Task.Run(() => { try { _host = DataServerHostFactory.Create(DataServer); } catch (AddressAlreadyInUseException) { //Another Sophis has already assumed the role of server. Sink the exception. CSMLog.Write("Main", "EntryPoint", CSMLog.eMVerbosity.M_error, "Another instance is already listening and acting as the RTD Server"); _host = null; } DataServer = _host.SingletonInstance as DataServer; DataServer.Start(); DataServer.OnClientConnectionChanged += OnClientConnectionChanged; DataServer.OnDataUpdatedFromProvider += OnDataUpdatedFromProvider; #if DEBUG DataServer.OnSubscriptionChanged += OnSubscriptionChanged; #endif }).ContinueWith(t => { UpdateCaption(); }, uiThreadScheduler); }
static void Main(string[] args) { foreach (var a in args) { Console.WriteLine(a); } var testDataProvider = new TestDataServiceProvider(); var dataServer = new DataServer(testDataProvider); dataServer.OnClientConnectionChanged += Ds_OnClientConnectionChanged; var host = DataServerHostFactory.Create(dataServer); Console.WriteLine("Press any key to exit"); Console.ReadLine(); host.Close(); host = null; }