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秒执行一次,见上面的代码)
 
 
参考:
 
其他参考:
 





posted @ 2015-05-12 18:47  HTL  阅读(536)  评论(0编辑  收藏  举报
htl