起因
这两天在写一个定时任务,在公司项目中,使用的是.Net Framework 4.0. 便想着在.Net Core是不是可以编写Windows服务,果真是可以的(2020-09-01)
1. 在.Net Framework中可以用installutil服务进行注册和卸载
//注册服务C:/Windows/Microsoft.NET/Framework/v4.0.30319/installutil -i E:/project/csharp/dotnetcore31/dotnet.core/qiufeng.service2/bin/Debug/qiufeng.service2.exe//卸载服务C:/Windows/Microsoft.NET/Framework/v4.0.30319/installutil /u E:/project/csharp/dotnetcore31/dotnet.core/qiufeng.service2/bin/Debug/qiufeng.service2.exe//启动服务net start Service1//关闭服务net stop Service1
2. 创建.Net Core控制台程序
在Nuget中,查找 System.ServiceProcess.ServiceController 进行安装.然后添加新项目
用.Net Core编写Windows 服务
namespace CoreService{ partial class Service1 : ServiceBase { public Service1() { InitializeComponent(); } protected override void OnStart(string[] args) { // TODO: 在此处添加代码以启动服务。 } protected override void OnStop() { // TODO: 在此处添加代码以执行停止服务所需的关闭操作。 } }}
static void Main(string[] args){ ServiceBase[] services = new ServiceBase[] { new Service1() //可以增加多个服务 }; ServiceBase.Run(services);}
3. .Net Core的windows服务注册和卸载
.Net Core中没有installutil工具.该怎么注册服务呢?
//使用管理员权限打开命令行工具,用powershell不可以,目前没发现哪里的问题 //sc create "xxx(服务名称)" binpath=xxx(服务所在的绝对路径) 注册服务sc create "qiufengservice" binpath=xxx //sc delete "xxx(服务名称)" 卸载服务#sc delete "qiufengservice"
在.Net 5(应该是)中可以通过依赖注入(内部还是在ServiceBase继续封装)的使用,更简单的是使用中间件.
个人能力有限,如果您发现有什么不对,请私信我
如果您觉得对您有用的话,可以点个赞或者加个关注,欢迎大家一起进行技术交流
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。