延长 BackgroundService 的关闭超时

Extending the shutdown timeout for BackgroundService

我有一个 class 派生自 BackgroundService 并作为托管服务添加到我的 Startup.cs 中。在 StopAsync() 方法中,我正在做一些相当长的任务。由于 Host.cs (link to source) class.
中的 ShutdownTimeout 选项,其中一些无法完成 我解决它的方法是将 ShutdownTimeout 设置为 IWebHostBuilder.UseShutdownTimeout(),但它对后台服务没有影响。

    private static IHostBuilder CreateHostBuilder(string[] args)
    {
        return Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseShutdownTimeout(TimeSpan.FromSeconds(60));
                webBuilder.UseStartup<Startup>();
            })
            .UseWindowsService();
    }

有没有办法为 BackgroundService 设置 UseShutdownTimeout

.ConfigureServices((hostContext, services) =>
    {
        services.Configure<HostOptions>(opts => opts.ShutdownTimeout = TimeSpan.FromSeconds(30));
    }

我认为它是在 Microsoft.Extensions.DependencyInjection 包中找到的。从您发布的代码看来,您正在使用不同于 Windows 服务或控制台应用程序的虚拟主机。