Пример #1
0
        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);
        }
Пример #2
0
        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;
        }