小编Ami*_*mir的帖子

在 Docker linux 容器中运行的 BackgroundService 类不会正常关闭

我创建了一个从 Microsoft.Extensions.Hosting.BackgroundService 继承的工作服务,然后我通过 Visual Studio 调试器将其部署到我的 Windows 机器上的 docker linux 容器。我在取消令牌.IsCancellationRequested 为真时发生的代码上放置了一个断点。然后我向容器发出“docker stop --time=30”,断点永远不会被击中,30 秒后调试器强行停止。

我还尝试覆盖 StopAsync 方法并在其中放置一个断点,但也不会调用该方法。我正在运行 .net core 3,最新版本的 docker 桌面。我已经确认调用了 StartAsync。

这是我的程序文件。

 public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }


        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureAppConfiguration((hostingContext, config) =>
                {
                    var builder = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory())
                        .AddEnvironmentVariables().Build();
                })
                .ConfigureServices((hostContext, services) => { services.AddHostedService<Worker>();    });

    }
Run Code Online (Sandbox Code Playgroud)

如果有人知道我错过了什么,或者有一个尊重停止的非网络服务器服务的工作示例,我将不胜感激。

添加我的工人的样子:

using System;
using System.Threading;
using System.Threading.Tasks;

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;

namespace MyWorker
{
    public …
Run Code Online (Sandbox Code Playgroud)

c# docker .net-core-3.0

7
推荐指数
2
解决办法
3879
查看次数

标签 统计

.net-core-3.0 ×1

c# ×1

docker ×1