- A+
所属分类:.NET技术
.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
没有广告 没有培训 每天都会分享技术文章