C# 使用Vici WinService组件来创建Windows服务

Vici WinService 是 是Windows平台下使用C#开发的轻量级用于创建,删除服务的类库,您只需简单的几行代码即可实现多线程异步服务的创建,删除,运行

废话不多说,直接上代码

/******************************************************************
 * 创建人:HTL
 * 创建时间:2015-5-12 14:09:39
 * 说明:使用Vici WinService组件创建的Windows服务
 * Email:[email protected]
 *******************************************************************/
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秒执行一次,见上面的代码)

参考:

Vici WinService

博客园:轻量级Windows服务创建组件

其他参考:

博客园:创建Windows服务(Windows Services)N种方式总结

博客园:C#检验Windows Service是否存在和启动

博客园:使用Topshelf创建Windows 服务

如何手动添加和删除Windows服务

来自为知笔记(Wiz)

时间: 2024-11-08 19:14:37

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

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

转自:http://www.cnblogs.com/aierong/archive/2012/05/28/2521409.html 最近由于工作需要,写了一些windows服务程序,有一些经验,我现在总结写出来.目前我知道的创建创建Windows服务有3种方式:a.利用.net框架类ServiceBaseb.利用组件Topshelfc.利用小工具instsrv和srvany 下面我利用这3种方式,分别做一个windows服务程序,程序功能就是每隔5秒往程序目录下记录日志: a.利用.net框架类

使用Topshelf创建Windows 服务

本文转载:http://www.cnblogs.com/aierong/archive/2012/05/28/2521409.html b.利用组件Topshelf 本方式特点:代码简单,开源组件,Windows服务可运行多个实例 Topshelf是一个开源的跨平台的服务框架,支持Windows和Mono,只需要几行代码就可以构建一个很方便使用的服务. 官方网站:http://topshelf-project.com 第1步:引用程序集TopShelf.dll和log4net.dll 第2步:创

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

1.创建windows服务项目 2.右键点击Service1.cs,查看代码, 用于编写操作逻辑代码 3.代码中OnStart用于执行服务事件 public partial class Service1 : ServiceBase { string logFilePath = ""; LogHelper logHelper; WendyWuBll bll = new WendyWuBll(); public Service1() { logFilePath = Configuratio

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

最近由于工作需要,写了一些windows服务程序,有一些经验,我现在总结写出来.目前我知道的创建创建Windows服务有3种方式:a.利用.net框架类ServiceBaseb.利用组件Topshelfc.利用小工具instsrv和srvany 下面我利用这3种方式,分别做一个windows服务程序,程序功能就是每隔5秒往程序目录下记录日志: a.利用.net框架类ServiceBase 本方式特点:简单,兼容性好 通过继承.net框架类ServiceBase实现 第1步: 新建一个Window

杂记2:VS2013创建Windows服务实现自动发送邮件

这篇随笔里,我将介绍如何用VS2013开发Windows服务项目,实现的功能是定时发送电子邮件. 开发环境:VS2013,SQL Server2008,采用C#语言开发 步骤一:创建Windows服务项目 首先,有人提问VS2013找不到创建Windows服务项目的选项,答案是在“Windows 桌面”目录下: 步骤二:重命名服务,添加Timer组件 重命名默认创建的Service1服务,比如MyMailService:然后在设计界面添加Timer组件. 这里要注意,VS工具箱默认提供的是Sys

C# 创建 windows服务(转)

在一个应用程序中创建多个 windows 服务的方法和 1083 错误的解决方法法 添加‘服务安装成功’后自启动功能 --------------------------------------------------------------------------------------1.创建 windows服务 项目  文件 -> 新建项目 -> 已安装的模板 -> Visual C# -> windows ,在右侧窗口选择"windows 服务" 2.系

VS2013创建Windows服务 || VS2015+Windows服务简易教程

转自:https://www.cnblogs.com/no27/p/4849123.htmlhttps://blog.csdn.net/ly416/article/details/78860522 VS2013创建Windows服务 一.创建服务 1.文件->新建->项目->windows桌面->windows服务,修改你要的项目名称.我这不改名,仍叫WindowsService1,确定. 2.其中的Program.cs文件是入口,Service1.cs是服务文件,所有的逻辑都在这

Topshelf创建Windows服务

使用Topshelf创建Windows服务 概述 Topshelf是创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with Topshelf通过5个步骤详细的介绍使用使用Topshelf创建Windows 服务.Topshelf是一个开源的跨平台的宿主服务框架,支持Windows和Mono,只需要几行代码就可以构建一个很方便使用的服务宿主. 引用安装 1.官网:http://topshelf-project.c

使用Topshelf 5步创建Windows 服务 z

使用Topshelf创建Windows 服务简要的介绍了创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with Topshelf通过5个步骤详细的介绍使用使用Topshelf创建Windows 服务.Topshelf是一个开源的跨平台的宿主服务框架,支持Windows和Mono,只需要几行代码就可以构建一个很方便使用的服务宿主. 1.Topshelf的代码托管在http://topshelf-project.c