Vici WinService 是 Windows平台下使用C#开发的轻量级用于创建,删除服务的类库,您只需简单的几行代码即可实现多线程异步服务的创建,删除,运行
废话不多说,直接上代码
  1. /******************************************************************
  2. * 创建人:HTL
  3. * 创建时间:2015-5-12 14:09:39
  4. * 说明:使用Vici WinService组件创建的Windows服务
  5. * Email:huangyuan413026@163.com
  6. *******************************************************************/
  7. using System;
  8. using System.Text;
  9. using NLog;//引用日志组件
  10. using Vici.WinService;//引用组件
  11. using System.ServiceProcess;//引用系统组件
  12. namespace HTL.TestService
  13. {
  14. #region 日志操作类
  15. /// <summary>
  16. /// 写入日志
  17. /// </summary>
  18. class Log
  19. {
  20. public static Logger _log = LogManager.GetCurrentClassLogger();
  21. public static Logger GetLog
  22. {
  23. get { return _log; }
  24. }
  25. }
  26. #endregion
  27. #region 自定义服务类
  28. /// <summary>
  29. /// 自定义服务类
  30. /// </summary>
  31. class TestService : Service
  32. {
  33. public TestService()
  34. : base(new ServiceInfo("Test_server"))//服务的名称和显示名称
  35. {
  36. ServiceTasks.Add(new TestServiceTask());
  37. }
  38. }
  39. #endregion
  40. #region 自定义服务中任务类
  41. /// <summary>
  42. /// 循环执行服务中任务
  43. /// </summary>
  44. class TestServiceTask : CyclicServiceTask
  45. {
  46. /// <summary>
  47. /// 30秒异步执行一次任务
  48. /// </summary>
  49. public TestServiceTask() : base(TimeSpan.FromSeconds(), false) { }
  50. public static NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger();
  51. protected override void RunTask()
  52. {
  53. Log.GetLog.Info("自定义服务任务正在工作中.....");
  54. }
  55. }
  56. #endregion
  57. static class Program
  58. {
  59. static void Main(params string[] parameters)
  60. {
  61. Log.GetLog.Info("开始运行程序");
  62. TestService service = new TestService();
  63. //自动运行
  64. service.ServiceInfo.ServiceStartMode = ServiceStartMode.Automatic;
  65. if (parameters.Length > )
  66. {
  67. string option = parameters[].ToLower();
  68. switch (option)
  69. {
  70. case "/console":
  71. {
  72. service.RunConsole();
  73. Log.GetLog.Info("运行控制台程序");
  74. } return;
  75. case "/install":
  76. {
  77. service.Install();
  78. Log.GetLog.Info("安装服务,自动运行");
  79. } return;
  80. case "/uninstall":
  81. {
  82. service.UnInstall();
  83. Log.GetLog.Info("开始卸载服务");
  84. } return;
  85. }
  86. }
  87. service.Run();
  88. }
  89. }
  90. }
 
如何运行?
 
1.在cmd命令行下切换到exe生成目录
2.运行exe文件 ,需要添加运行参数(见上面的代码),运行后关闭下面的命令行不影响服务的执行
3.安装/卸载服务
4.启动"Test_server"服务
5.查看服务执行的任务日志(每30秒执行一次,见上面的代码)
 
 
参考:
 
其他参考:
 

C# 使用Vici WinService组件来创建Windows服务的更多相关文章

  1. 使用 Topshelf 组件一步一步创建 Windows 服务 (2) 使用Quartz.net 调度

    上一篇说了如何使用 Topshelf 组件快速创建Windows服务,接下来介绍如何使用 Quartz.net 关于Quartz.net的好处,网上搜索都是一大把一大把的,我就不再多介绍. 先介绍需要 ...

  2. 使用Topshelf组件 一步一步创建 Windows 服务

    我们先来介绍一下使用它的好处,以下论述参考自其他大神. topshelf是创建windows服务的一种方式,相比原生实现ServiceBase.Install.Installer更为简单方便, 我们只 ...

  3. windows服务搭建(VS2019创建Windows服务不显示安装组件)

    1.创建windows服务应用 2.右键查看代码 3.写个计时器Timer  using System.Timers; 如上图,按tab键快速操作  会自动创建一个委托 改为下边的方式,打印日志来记录 ...

  4. C# 创建Windows服务

    创建windows服务项目   2 右键点击Service1.cs,查看代码, 用于编写操作逻辑代码 3 代码中OnStart用于执行服务事件,一般采用线程方式执行方法,便于隔一段事件执行一回 END ...

  5. 用C#创建Windows服务(Windows Services)

    用C#创建Windows服务(Windows Services) 学习:  第一步:创建服务框架 创建一个新的 Windows 服务项目,可以从Visual C# 工程中选取 Windows 服务(W ...

  6. [转]C#创建Windows服务与安装

    本文档用于创建windows服务说明,使用vs2010系统平台 创建项目 1 创建windows服务项目 2 右键点击Service1.cs,查看代码, 用于编写操作逻辑代码 3 代码中OnStart ...

  7. 创建Windows服务(Windows Services)N种方式总结

    最近由于工作需要,写了一些windows服务程序,有一些经验,我现在总结写出来.目前我知道的创建创建Windows服务有3种方式:a.利用.net框架类ServiceBaseb.利用组件Topshel ...

  8. C# 创建Windows服务。服务功能:定时操作数据库 (转)

    C# 创建Windows服务.服务功能:定时操作数据库 一.创建window服务 1.新建项目-->选择Windows服务.默认生成文件包括Program.cs,Service1.cs 2.在S ...

  9. C#创建Windows服务与安装-图解

    1.创建windows服务项目

随机推荐

  1. wpf企业应用之主从结构列表

    主从结构在企业级应用中相当常见,这里结合我的例子谈一下wpf中主从结构列表展示的常用做法,具体效果见 wpf企业级开发中的几种常见业务场景. 首先,Model有两种,主表对应model(假设为mode ...

  2. [Luogu4724][模板]三维凸包(增量构造法)

    1.向量点积同二维,x1y1+x2y2+x3y3.向量叉积是行列式形式,(y1z2-z1y2,z1x2-x1z2,x1y2-y1x2). 2.增量构造法: 1)首先定义,一个平面由三个点唯一确定.一个 ...

  3. BZOJ 4521 CQOI 2016 手机号码 数位DP

    4521: [Cqoi2016]手机号码 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 539  Solved: 325[Submit][Status ...

  4. NOIP 算法模板

    Hash: #include <iostream> #include <cstdio> #include <cstdlib> #include <algori ...

  5. BZOJ 2756: [SCOI2012]奇怪的游戏 网络流/二分

    2756: [SCOI2012]奇怪的游戏 Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 1594  Solved: 396[Submit][Stat ...

  6. ControllerEvent

    1.TouchDown  --->按下去 响应事件 2.TouchRepeat --->重复点击 ,从第二次点击开始响应事件 3.TouchDragInside  ---->在组建范 ...

  7. 双频无线网安装设置(5g ) for linux

    为了在局域网实现远程wifi调试,例如调试需要图像数据传输,则需要搭建局域网5g无线网络. 1.硬件要求 a. TP-Link(型号:TL-WDR6500,AC1300双频无线路由器,支持5g,2.4 ...

  8. MySQL: 查看一次SQL的执行时间都花在哪些环节上

    select @@profiling -- 看看当前的session的profiling打开没有 set profiling = 1 -- 如果没打开,打开一下 -- 执行一些sql select c ...

  9. .Net C#上传文件最大设置

    <!--网页允许的最大设置节点--> <system.web> <httpRuntime targetFramework="4.5" maxReque ...

  10. redux 个人整理

    序 本人工作之余的闲暇时间还是很充裕的.在完成经理安排的任务后,基本上都是在自学,主要是阅读各种技术文档.浏览博客.运行别人写的一些前端demo并观赏与赞叹.在ScorpionJay 同学的带领下,我 ...