在.Net Core控制台应用程序中触发后台服务的ExecuteAsync方法

5
我正在创建一个ASP.NET Core控制台应用程序,该程序将在不同环境下作为后台服务运行。我使用了Microsoft.Extensions.Hosting提供的"BackgroundService"类。当我的程序启动时,我想要运行它的"ExecuteAsync"方法。
文件: Program.cs
public static void Main(string[] args)
        {
            var host = new HostBuilder()
                  .ConfigureHostConfiguration(configHost =>
                  {
                  })
                  .ConfigureServices((hostContext, services) =>
                  {
                      services.AddHostedService<IHostedService,RabbitLister>();

                  })
                 .UseConsoleLifetime()
                 .Build();


        }

文件:RabbitLister.cs

public class RabbitLister : BackgroundService
    {
        private readonly IEventBus _eventBus;
        private readonly ILogger<RabbitLister> _logger;

        public RabbitLister()
        {
        }

        public RabbitLister(IEventBus eventBus, ILogger<RabbitLister> logger)
        {
            _eventBus = eventBus;
            _logger = logger;
        }

        protected override Task ExecuteAsync(CancellationToken stoppingToken)
        {
            _eventBus.SubscribeDynamic("myQueue");
            return Task.CompletedTask;
        }
    }

1
在构建主机后,调用host.Run()函数将启动托管服务并最终调用执行函数。 - Nkosi
1个回答

5
构建主机后,调用 host.Run()
public static void Main(string[] args) {
    var host = new HostBuilder()
          .ConfigureHostConfiguration(configHost => {
          })
          .ConfigureServices((hostContext, services) => {
              services.AddHostedService<IHostedService, RabbitLister>();
          })
         .UseConsoleLifetime()
         .Build();

    //run the host
    host.Run();
}

这将启动托管服务并最终调用执行函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接