.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