我创建了一个从 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)