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





  • 相关阅读:
    java基础高级
    Elasticsearch
    Nginx
    go语言基础
    elasticsearch启动失败
    redis基础
    数据结构(java版)
    mysql实现两个字段合并成一个字段查询
    StringBuffer 字符串截取从后往前,从前往后
    ERROR c.j.e.m.g.h.GatewayExceptionHandler [handle,52] [网关异常处理]请求路径
  • 原文地址:https://www.cnblogs.com/huangtailang/p/4498221.html
Copyright © 2020-2023  润新知