zoukankan      html  css  js  c++  java
  • C#制作Windows service服务系列二演示一个定期执行的windows服务及调试

    一、 经常有人问起如何让程序定期自动执行 
      除了像系统任务和SQL JOB/DTS等都可以满足不同的用户需求外,这里演示了如何做一个简单的windows serivce的框架。主要的功能是按照预先设定的时间间隔来执行类似的操作,比如抓取网页,抓取天气预报,群发邮件等。

      假定用户有如下代码需要定期自动执行:

     

    1. #region 获取内容  
    2.         /**//// <summary>  
    3.         /// 获取内容,by tony 2009.9,16   
    4.         /// 邀月(downmoon):3w@live.cn  
    5.         /// </summary>  
    6.         public void GetContentByMethods(bool isDelteOldFile)  
    7.         {  
    8.             System.Text.StringBuilder builder = new System.Text.StringBuilder();  
    9.             try  
    10.             {  
    11.                 DeleteOldFile#region DeleteOldFile  
    12.                 if (isDelteOldFile)  
    13.                 {  
    14.                     string path = Globals.BakPath;  
    15.                     if (System.IO.Directory.Exists(path))  
    16.                     {  
    17.                         string[] strFiles = System.IO.Directory.GetFiles(path);  
    18.                         foreach (string strFile in strFiles)  
    19.                         {  
    20.                             System.IO.File.Delete(strFile);  
    21.                         }  
    22.                     }  
    23.                 }  
    24.                 #endregion  
    25.                 My Methods#region My Methods  
    26.                 int tempCount = 0;  
    27.                 string temp = "Operation_{0} was  sucessfully executed at {1} by Operator_{2}!";  
    28.                 string temp2 = string.Empty;  
    29.                 string filename = Globals.CreateXMLDir(Globals.BakPath) + Globals.StrTempDate + ".txt";  
    30.                 for (int k = 0; k < Globals.TopCount; k++)  
    31.                 {  
    32.                     temp2 = string.Empty;  
    33.                     //此处从数据表中读取数据,做一些事情,比如发邮件,抓取网页内容等。  
    34.                     temp2 = string.Format(temp, k, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), k) + "\r\n";  
    35.                     builder.Append(temp2);  
    36.                     tempCount++;  
    37.                 }  
    38.                 builder.Append("total [" + tempCount + "] records was executed this time!");  
    39.                 SaveFileResult(filename, builder.ToString());  
    40.                 #endregion  
    41.             }  
    42.             catch (Exception ex) { string s = ex.Message; }  
    43.         }  



      那么,只需要将以上代码放在windows service环境下,部署成windows service,即可定期执行

      详细过程我就省略了! 看文后源码

      说明:
      1、SetupServer.bat ,双击可安装服务
      2、unInstallServer.bat,双击可卸载服务
      3、主要文件WSDemoByTime.exe
      4、配置文件WSDemoByTime.exe.config(主要配置数量、间隔时间、数据连接等)

      运行效果,这里只演示了生成一个基本的记录文件。见图;

    邀月工作室 

    邀月工作室 


      二、如何调试windows服务(windows service)。

      这里提供简单的处理过程:

      假定,我们已经部署好了windows service,结果发现不能如我们想像的运行,除了像本系列所描述的记录日志外,还可以直接调试进程。

      具体步骤见下图:

       一、调试--附加到进程

      邀月工作室 
      邀月工作室

      二、设置断点,调试
      邀月工作室 
      三、如何修改windows service配置并生效? 

          请注意,windows service的配置文件一般形如XXX.exe.Config,在本文中是WSDemoByTime.exe.Config,这个配置文件必须与WSDemoByTime.exe文件一致,并且修改配置文件后,需要重新启动windows serice才能使配置生效。 
      邀月工作室

  • 相关阅读:
    MYSQL进阶学习笔记十七:MySQL定期维护!(视频序号:进阶_36)
    MYSQL进阶学习笔记十六:MySQL 监控!(视频序号:进阶_35)
    MYSQL进阶学习笔记十五:MySQL 的账号权限赋予!(视频序号:进阶_33,34)
    MYSQL进阶学习笔记十四:MySQL 应用程序优化!(视频序号:进阶_32)
    学习布局
    接触IT的第一天
    分布视图分页
    单例模式
    js获取URL地址
    View视图传json格式数据到Js
  • 原文地址:https://www.cnblogs.com/amylis_chen/p/2283736.html
Copyright © 2011-2022 走看看