.Net Core 控制台 使用Topshelf 加入DI(服務注冊)
如果是控制台使用Topshelf請先按照相應包配置
Nuget包
- Topshelf
- 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
沒有廣告 沒有培訓 每天都會分享技術文章