程序地带

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


.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
没有广告 没有培训 每天都会分享技术文章


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/cyCalf/archive/2021/01/13/14272412.html

随机推荐

计算机基础知识

查看目录网络基础知识计算机基础知识1计算机基础知识2计算机病毒病毒:人为编制的程序,特点有隐蔽性、传染性破坏性等。传染性是病毒的基本特征,破坏性是目的按感染的方式分为:引导型病毒、文件型、网络、复合型...

MrFlySand 阅读(889)

原生js封装轮播图

工作原因,好久没更新博客了,今天来个用原生js写轮播图,上代码classBanner{constructor(props={}){if(!(props...

浩气长存666 阅读(553)

CTF-Web1

题目:http://114.67.246.176:16452/ 在这个网址中找到flag。在网页源码中找到一段注释的代码 :<!--flag{91acd0e4288c...

greatHongchao 阅读(910)

微信Dat文件解码

微信Dat文件解码

最近在整理磁盘文件,因为经过一段时间的蹂躏后,磁盘实在是太多东西了,不整理一下,简直对不住我的SSD好嘛。偶然发现磁盘中某公司的文件夹占用空间简...

data-life 阅读(911)

nginx location规则_Nginx七层负载均衡

nginx location规则_Nginx七层负载均衡

Nginx负载均衡基本概述为什么要使用负载均衡当我们的Web服务器直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台Web服务器组成集群&#...

weixin_39938875 阅读(583)