C# 使用Vici WinService组件来创建Windows服务
Vici WinService 是 Windows平台下使用C#开发的轻量级用于创建,删除服务的类库,您只需简单的几行代码即可实现多线程异步服务的创建,删除,运行
废话不多说,直接上代码
/****************************************************************** * 创建人:HTL * 创建时间:2015-5-12 14:09:39 * 说明:使用Vici WinService组件创建的Windows服务 * Email:huangyuan413026@163.com *******************************************************************/ using System; using System.Text; using NLog;//引用日志组件 using Vici.WinService;//引用组件 using System.ServiceProcess;//引用系统组件 namespace HTL.TestService { #region 日志操作类 /// <summary> /// 写入日志 /// </summary> class Log { public static Logger _log = LogManager.GetCurrentClassLogger(); public static Logger GetLog { get { return _log; } } } #endregion #region 自定义服务类 /// <summary> /// 自定义服务类 /// </summary> class TestService : Service { public TestService() : base(new ServiceInfo("Test_server"))//服务的名称和显示名称 { ServiceTasks.Add(new TestServiceTask()); } } #endregion #region 自定义服务中任务类 /// <summary> /// 循环执行服务中任务 /// </summary> class TestServiceTask : CyclicServiceTask { /// <summary> /// 30秒异步执行一次任务 /// </summary> public TestServiceTask() : base(TimeSpan.FromSeconds(30), false) { } public static NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger(); protected override void RunTask() { Log.GetLog.Info("自定义服务任务正在工作中....."); } } #endregion static class Program { static void Main(params string[] parameters) { Log.GetLog.Info("开始运行程序"); TestService service = new TestService(); //自动运行 service.ServiceInfo.ServiceStartMode = ServiceStartMode.Automatic; if (parameters.Length > 0) { string option = parameters[0].ToLower(); switch (option) { case "/console": { service.RunConsole(); Log.GetLog.Info("运行控制台程序"); } return; case "/install": { service.Install(); Log.GetLog.Info("安装服务,自动运行"); } return; case "/uninstall": { service.UnInstall(); Log.GetLog.Info("开始卸载服务"); } return; } } service.Run(); } } }
如何运行?
1.在cmd命令行下切换到exe生成目录
2.运行exe文件 ,需要添加运行参数(见上面的代码),运行后关闭下面的命令行不影响服务的执行
3.安装/卸载服务
4.启动"Test_server"服务
5.查看服务执行的任务日志(每30秒执行一次,见上面的代码)
参考:
其他参考: