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

  
    }
}

参考链接

最后

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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM