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(), 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 > )
{
string option = parameters[].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秒执行一次,见上面的代码)
 
 
参考:
 
其他参考:
 

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. leetcode 链表 两数相加

     两数相加     给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例 ...

  2. ASP.net 简单分页的实现

    在自己的项目中有一个文章的管理页面需要用到分页, 这种分页方法是在黑马的一个视频中看到的,便用在了自己的项目中. 但是使用控件实在是太丑,虽然我写的也丑....... gridview 控件提供的分页 ...

  3. css选择器(第n个类选择器)的坑

    css选择器选择第n个子元素,共有两种写法: .parent span:nth-child(n) 选择parent下的第n个子元素(不管前边是不是span,都算在内) .parent span:nth ...

  4. 清北冬令营入学测试[ABCDEF]

    http://tyvj.cn/Contest/861 [1.2.2017] 像我这种蒟蒻只做了前6道还有道不会只拿了暴力分 A 描述 这是一道有背景的题目,小A也是一个有故事的人.但可惜的是这里纸张太 ...

  5. [POI2015]Łasuchy

    [POI2015]Łasuchy 题目大意: 圆桌上摆放着\(n(n\le10^6)\)份食物,围成一圈,第\(i\)份食物所含热量为\(c_i\). 相邻两份食物之间坐着一个人,共有\(n\)个人. ...

  6. python数据库操作——sqlite3模块

    # -*- coding: utf-8 -*- ''' Version : Python27 Author : Spring God Date : 2012-4-26 ''' import sqlit ...

  7. http://qurtyy.blog.163.com/blog/static/5744368120130221419244/

    我们先来看它的思路:把控制不透明度和控向上移动的动画分别存储在两个队列中,控制向上移动的队列按默认情况进行(在2000毫秒内完成),而不透明度的控制在1000毫秒内执行,但这个队列要晚于默认队列100 ...

  8. shell中set的用法(转)

    使用set命令可以设置各种shell选项或者列出shell变量.单个选项设置常用的特性. 在某些选项之后-o参数将特殊特性打开.在某些选项之后使用+o参数将关闭某些特性, 不带任何参数的set命令将显 ...

  9. py2exe使用方法 (含一些调试技巧,如压缩email 类)(转)

    一.简介 py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装python而在windows系统上运行这个可执行程序. py2e ...

  10. HDU 4718 The LCIS on the Tree (动态树LCT)

    The LCIS on the Tree Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Oth ...