zoukankan      html  css  js  c++  java
  • C# windows服务制作(包括安装及卸载)

    开篇语

    因工作内容需要做一个windows服务,此前并没有相关经验,所以做了一个demo来跑跑这个梗(高手跳过,需要的来踩)~

    效果如下:打开服务,可以找到我们新增的一个windows服务,这个demo是定时向一个txt文件输出一句话

    生成的以日期命名的txt文件

    打开文件结果如下:

    全过程梳理

    本文将只粗略简单的介绍一下windows服务是如何开发和安装的

     一、创建windows服务
    如图新建一个Windows服务

    进入程序如图

    空白服务如下

     1 public partial class Service1 : ServiceBase  
     2    {  
     3        System.Threading.Timer recordTimer;  
     4   
     5   
     6        public Service1()  
     7        {  
     8            InitializeComponent();  
     9        }  
    10   
    11   
    12        protected override void OnStart(string[] args)  
    13        {  
    14        }  
    15   
    16   
    17        protected override void OnStop()  
    18        {  
    19        }  
    20    }  

    只要在OnStart里完成你的功能代码即可。本例中我们做一个定时向本地文件写记录的功能。

    创建一个类,用户写文件

     1  /// <summary>  
     2         /// 保存至本地文件  
     3         /// </summary>  
     4         /// <param name="ETMID"></param>  
     5         /// <param name="content"></param>  
     6         public static void SaveRecord(string content)
     7         {
     8             if (string.IsNullOrEmpty(content))
     9             {
    10                 return;
    11             }
    12             FileStream fileStream = null;
    13             StreamWriter streamWriter = null;
    14             try
    15             {
    16                 string path = Path.Combine(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase, string.Format("{0:yyyyMMdd}", DateTime.Now));
    17 
    18 
    19                 using (fileStream = new FileStream(path, FileMode.Append, FileAccess.Write))
    20                 {
    21                     using (streamWriter = new StreamWriter(fileStream))
    22                     {
    23                         streamWriter.Write(content);
    24 
    25 
    26                         if (streamWriter != null)
    27                         {
    28                             streamWriter.Close();
    29                         }
    30                     }
    31 
    32                     if (fileStream != null)
    33                     {
    34                         fileStream.Close();
    35                     }
    36                 }
    37             }
    38             catch { }
    39         }  

    如图那么在Service1中调用

     1 public partial class Service1 : ServiceBase
     2     {
     3         System.Threading.Timer recordTimer;
     4         public Service1()
     5         {
     6             InitializeComponent();
     7         }
     8 
     9         protected override void OnStart(string[] args)
    10         {
    11             IntialSaveRecord();
    12         }
    13         /// <summary>
    14         /// 定时检查,并执行方法
    15         /// </summary>
    16         /// <param name="source"></param>
    17         /// <param name="e"></param>
    18         private void IntialSaveRecord()
    19         {
    20             TimerCallback timerCallback = new TimerCallback(CallbackTask);
    21 
    22             AutoResetEvent autoEvent = new AutoResetEvent(false);
    23             recordTimer = new System.Threading.Timer(timerCallback, autoEvent, 0, 10000);//其中参数10000表示延时执行服务的时间间隔,毫秒为单位
    24         }
    25         //方法
    26         private void CallbackTask(Object stateInfo)
    27         {
    28             Show_Java.SaveRecord(string.Format(@"当前记录时间:{0},状况:程序运行正常!", DateTime.Now));
    29         }
    30 
    31         protected override void OnStop()
    32         {
    33             if (recordTimer != null)
    34             {
    35                 recordTimer.Dispose();
    36             }
    37         }
    38     }

    安装程序

    这样服务算是写的差不多了,下面添加一个安装程序,用于安装服务。

    如图,在service1页面空白处右键-添加安装程序

    添加一个安装程序,如图,添加完成后

    设置相应的属性,给serviceInstaller1设置属性,主要是描述信息。如图,

    给serviceProcessInstaller1设置,主要是account。一般选localsystem,如图

    这样服务已经写好了。那么如何添加到windows服务里面去呢。这里推荐一种简单实用的方法(也可以通过代码来安装,这里就不做过多讲解了)

    安装服务

     上面写好的服务,最终生成的是一个exe文件。如图,

    安装程序安装时需要用到这个exe的路径,所以方便起见,将这个生成的exe文件拷贝至安装程序的运行目录下。(这里我将exe拷贝到D盘shows文件夹下面)

    用管理员权限打开cmd窗口

    然后分别执行

    @SET FrameworkDir=%WINDIR%Microsoft.NETFramework
    @SET FrameworkVersion=v2.0.50727
    @SET PATH=%FrameworkDir%\%FrameworkVersion%;%WINDIR%System32;%PATH%;
    InstallUtil.exe D:路径程序名称.exe        //安装服务
    InstallUtil.exe /u D:路径程序名称.exe    //卸载服务(程序安装好了,如果想要修改,需要先卸载该服务,再次执行安装)

    运行后若无错误,效果应该如下

    运行完后在服务中查看,如图:

    再在安装目录下看记录的文件(因为我们设置项目的时候选的是手动,此时要记住启动该服务,程序才会定时执行)

    这样,一个windows服务算是安装成功了。(方法多种多样,希望各位多提宝贵意见,不胜感激~)

  • 相关阅读:
    Alpha冲刺(5/10)
    Alpha冲刺(4/10)
    团队现场编程
    关于合同标准形的专题讨论
    关于相似标准形的专题讨论
    关于数学分析的计算题I(积分)
    关于数学分析的证明题III(级数)
    关于数学分析的证明题II(微分)
    关于数学分析的证明题I(积分)
    关于反常积分收敛的专题讨论
  • 原文地址:https://www.cnblogs.com/zhangxiaoyong/p/5920678.html
Copyright © 2011-2022 走看看