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; }); }
public ServiceHost(IHostedService service, IWebJobsShutdownWatcher webJobsShutdownWatcher, IShutdownHandleFactory shutdownHandleFactory, CancellationToken externalToken) { _service = service ?? throw new ArgumentNullException(nameof(service)); _jobHost = new JobHost(webJobsShutdownWatcher, shutdownHandleFactory, externalToken); }