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); }
private static void CreateDataServerFromConfig(FusionDataServiceProvider dataServiceProvider) { DataServer = new DataServer(dataServiceProvider); string defaultMessage = ""; CSMConfigurationFile.getEntryValue("FusionLink", "DefaultMessage", ref defaultMessage, Resources.DefaultDataLoadingMessage); DataServer.DefaultMessage = defaultMessage; }