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

  • A+
所属分类:.NET技术
摘要

如果是控制台使用Topshelf请先按照相应包配置如果你喜欢信息技术,欢迎你加入我们 QQ群:301453550
没有广告 没有培训 每天都会分享技术文章


.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("服务结束");      };         } } 

参考链接

最后

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