.net core 3.1 windows服务依赖注入
2021/7/30 7:39:42
本文主要是介绍.net core 3.1 windows服务依赖注入,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1、建立一个接口
public interface IServicesDoParse { void Do(); }
2、做一个接口的实现
public class ServicesDoParse : IServicesDoParse { private readonly ILogger<IServicesDoParse> _logger; private readonly MQConfig _mqConfig; public ServicesDoParse(ILogger<ServicesDoParse> logger, IOptions<MQConfig> settings) { _logger = logger; _mqConfig = settings.Value; } public void Do() { _logger.LogInformation("ServicesDoParse运行成功,在注入的服务里读取IP:", _mqConfig.IP); } }
3、在Program的CreateHostBuilder里添加
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseWindowsService() .ConfigureServices((hostContext, services) => { services.AddScoped<IServicesDoParse, ServicesDoParse>(); services.AddHostedService<Worker>(); services.Configure<MQConfig>(hostContext.Configuration.GetSection(key: "MQ")); }) .UseSerilog();
4、实际使用
public class Worker : BackgroundService { private readonly ILogger<Worker> _logger; private readonly MQConfig _mqConfig; private readonly IServiceProvider _serviceProvider; public Worker(ILogger<Worker> logger, IOptions<MQConfig> settings, IServiceProvider serviceProvider) { _logger = logger; _mqConfig = settings.Value; _serviceProvider = serviceProvider; } protected override async Task ExecuteAsync(CancellationToken stoppingToken) { while (!stoppingToken.IsCancellationRequested) { _logger.LogInformation("Worker running at: {time}" + "IP:{1},Port:{2}", DateTimeOffset.Now, _mqConfig.IP, _mqConfig.Port); using (var scope = _serviceProvider.CreateScope()) { var service = scope.ServiceProvider.GetRequiredService<IServicesDoParse>(); service.Do(); } await Task.Delay(1000, stoppingToken); } } }
5、运行结果如下:
这篇关于.net core 3.1 windows服务依赖注入的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具
- 2024-01-24.NET集成IdGenerator生成分布式全局唯一ID