public Task StopAsync(CancellationToken cancellationToken) { if (_stopped) { return(Task.CompletedTask); } _stopped = true; _logger?.Shutdown(); if (!cancellationToken.CanBeCanceled) { cancellationToken = new CancellationTokenSource(_options.ShutdownTimeout).Token; } // Fire IApplicationLifetime.Stopping _applicationLifetime?.StopApplication(); // Fire the IHostedService.Stop _hostedServiceExecutor?.Stop(); // Fire IApplicationLifetime.Stopped _applicationLifetime?.NotifyStopped(); return(Task.CompletedTask); }
public void Dispose() { _logger?.Shutdown(); // Fire IApplicationLifetime.Stopping _applicationLifetime?.StopApplication(); // Fire the IHostedService.Stop _hostedServiceExecutor?.Stop(); (_hostingServiceProvider as IDisposable)?.Dispose(); (_applicationServices as IDisposable)?.Dispose(); // Fire IApplicationLifetime.Stopped _applicationLifetime?.NotifyStopped(); HostingEventSource.Log.HostStop(); }