Пример #1
0
        public JobHost(IWebJobsShutdownWatcher webJobsShutdownWatcher,
                       IShutdownHandleFactory shutdownHandleFactory,
                       CancellationToken externalToken)
        {
            _linkedCts = CancellationTokenSource.CreateLinkedTokenSource(_internalCts.Token, externalToken);
            _webJobsShutdownWatcher = webJobsShutdownWatcher ?? new WebJobsShutdownWatcher();

            void Shutdown()
            {
                try
                {
                    _internalCts.Cancel();
                }
                catch (ObjectDisposedException)
                {
                }
                finally
                {
                    _waitForExit.Wait(stoppingWaitTimeMs);
                }
            }

            _webJobsShutdownWatcher.Token.Register(Shutdown);
            _shutdownHandle = shutdownHandleFactory.Create(
                processExitEventHandler: (sender, eventArgs) => Shutdown(),
                cancelKeyPressEventHandler: (sender, eventArgs) => { Shutdown(); eventArgs.Cancel = true; });
        }
Пример #2
0
        public ServiceHost(IHostedService service,
                           IWebJobsShutdownWatcher webJobsShutdownWatcher, IShutdownHandleFactory shutdownHandleFactory,
                           CancellationToken externalToken)
        {
            _service = service ?? throw new ArgumentNullException(nameof(service));

            _jobHost = new JobHost(webJobsShutdownWatcher, shutdownHandleFactory, externalToken);
        }