安装
管理员打开cmdhtml
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 InstallUtil.exe Path_WinSvc.exe
或者 将 InstallUtil.exe 直接拷贝到生成目录,运行 InstallUtil WinSvcName.exegit
基础github
原生实现windows
问题梳理框架
在初始化安装时发生异常:System.BadImageFormatException: 未能加载文件或程序集“file:///F:\IT\C#\WinSvc\TestWinSvc\Release\WinSvcSqh.exe”或它的某一个依赖项。 试图加载格式不正确的程序。
解决:注意生成-目标平台(x64 or x86)以及应用程序-目标框架ide
在“安装”阶段发生异常:“System.Security.SecurityException:未找到源,但未能搜索某些或所有事件日志。 不可访问的日志: Security。”
解决:不经过cmd窗口,改用.bat文件,右键以管理员身份运行。学习
安装服务Install.bat以下,仅供参考:spa
%复制安装文件至当前目录% copy C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe %~dp0 %切换到当前bat文件所在目录% cd /d %~dp0 %执行安装命令% installutil WinSvcSqh.exe @pause;
最后,在 个人电脑-右键属性-服务 中便可看到新增的windows服务。.net
看下代码,基本windows服务以下调试
partial class WinSvcSqh : ServiceBase { public WinSvcSqh() { InitializeComponent(); } protected override void OnStart(string[] args) { // do something } protected override void OnStop() { // do something } }
主程序启动代码以下
/// 应用程序的主入口点。 public static void Main() { ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new WinSvcSqh() }; ServiceBase.Run(ServicesToRun); }
基础教程参见: http://www.javashuo.com/article/p-bgaydmur-dn.html
具体参见:.Net IOC框架 | sqh
目标:TopShelf+Quartz.net实现基于window服务的定时任务调度
Topshelf
官网 | Topshelf,开源,跨平台的宿主服务框架(Windows服务开发框架),便捷建立 windows服务。
结合 Quartz,实现任务调度服务。
Quartz .Net
官网 | Quartz,开源,企业级定时计划任务调度框架,支持 .NET Core。
初步学习:Quartz .net开源job调度框架,相关参见Github上的demo示例:JobScheduleDemoCode