Start() 공개 메소드

public Start ( ) : Task
리턴 Task
예제 #1
0
        protected override void OnStart(string[] args)
        {
            int port = int.Parse(ConfigurationManager.AppSettings["WebSocketServerPort"]);
            _wsServerWrapper = new WebSocketServerWrapper(port: port);
            _userManager = new UserManager(_wsServerWrapper);
            _wsServerWrapper.Start();
            Trace.TraceInformation("Started server on {0}:{1}", IPAddress.Any, port);

            _nmsWrapper = new NMSWrapper(_userManager, _cancellationTokenSource);
            _cacheController = new CacheController(_nmsWrapper, _wsServerWrapper, _userManager);
            _nmsTask = _nmsWrapper.Start();

            _nmsTimer = new Timer((s) =>
            {
                if (_cancellationTokenSource.IsCancellationRequested)
                {
                    Trace.TraceError("Cancellation Requested");
                    ExitCode = -1;
                    throw new OperationCanceledException(_cancellationTokenSource.Token);
                }
                else if (_nmsTask.IsFaulted)
                {
                    Trace.TraceError("NMS Task Faulted: {0}", _nmsTask.Exception);
                    ExitCode = -1;
                    throw _nmsTask.Exception;
                }
                else if (_nmsTask.IsCompleted)
                {
                    Trace.TraceInformation("NMS Task Finished");

                    Stop();
                }
            }, null, TimeSpan.Zero, TimeSpan.FromSeconds(30));
        }