2021年1月13日星期三

.Net Core 控制台 使用Topshelf 加入DI(服务注册)

.Net Core 控制台 使用Topshelf 加入DI(服务注册)

如果是控制台使用Topshelf请先按照相应包配置

Nuget包

  1. Topshelf
  2. Microsoft.Extensions.DependencyInjection

Code block

 //第一步 (注意:Server IServer 是我用来举例的命名,请修改成你自己的命名) class Program{ public async static Task Main(string[] args) {  var services = new ServiceCollection();//声明DI对象  services.AddSingleton<IServer, Server>();//使用单例注入.  var serviceProvider = services.BuildServiceProvider();//构建服务容器  var serviceProviders = serviceProvider.GetService<IServer>();//获取指定服务   // 配置和运行宿主服务   HostFactory.Run(x =>            {    x.Service<ICarPark>(s =>          {     // 指定服务类型     s.ConstructUsing(name =>     {      return serviceProvider.GetService<IServer>();     });     //3     // 当服务启动后执行什么     s.WhenStarted(tc => tc.Start());         // 当服务停止后执行什么     s.WhenStopped(tc => tc.Stop());        });    // 服务用本地系统账号来运行    x.RunAsLocalSystem();           // 服务描述信息    x.SetDescription("服务描述信息");      // 服务显示名称    x.SetDisplayName("服务显示名称");          // 服务名称    x.SetServiceName("服务名称");         }); }}//第二步 public interface IServer{  void Stop();  void Start();  }} //第三步 using System.Timers; public class Server:IServer{ public Server() {    _timer = new Timer(3000) { AutoReset = true };  _timer.Elapsed += (sender, eventArgs) => OrderWrite(); }   public void OrderWrite() {  Console.WriteLine("开始", DateTime.Now); } //声明一个时间函数让 当前这个函数不断被调用 public void Stop(){   Console.log("服务开始");  };  public void Stop(){   Console.log("服务结束");  };  }}

参考链接

  • https://github.com/Topshelf/Topshelf Topshelf github地址
  • https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/windows-service?view=aspnetcore-2.1&tabs=visual-studio .net core 托管服务微软官网文档

最后

如果你喜欢信息技术,欢迎你加入我们 QQ群:301453550
没有广告 没有培训 每天都会分享技术文章









原文转载:http://www.shaoqun.com/a/508676.html

跨境电商:https://www.ikjzd.com/

zappos:https://www.ikjzd.com/w/330

csa:https://www.ikjzd.com/w/904


.NetCore控制台使用Topshelf加入DI(服务注册)如果是控制台使用Topshelf请先按照相应包配置Nuget包TopshelfMicrosoft.Extensions.DependencyInjectionCodeblock//第一步(注意:ServerIServer是我用来举例的命名,请修改成你自己的命名)classProgram{publicasyncstaticTaskMain
邮乐网购:邮乐网购
bestbuy:bestbuy
Amy聊跨境:英国VAT相关 — 欧盟销售清单:Amy聊跨境:英国VAT相关 — 欧盟销售清单
中美互征关税行业分布曝光,中美贸易战对跨境卖家有何影响?:中美互征关税行业分布曝光,中美贸易战对跨境卖家有何影响?
东南亚社交营销增长策略:吸引与信任是营销的核心:东南亚社交营销增长策略:吸引与信任是营销的核心

没有评论:

发表评论