C#制作Windows service服务系列二:演示一个定期执行的windows服务及调试(windows service)

  系列一: 制作一个可安装、可启动、可停止、可卸载的Windows service(downmoon原创)

  系列二:演示一个定期执行的windows服务及调试(windows service)(downmoon)

  系列三: windows service系列三--制作可控制界面的windows service

 

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

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

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

  那么,只需要将以上代码放在windows service环境下,部署成windows service,即可定期执行
  详细过程我就省略了! 看文后源码
  说明:
  1、SetupServer.bat ,双击可安装服务
  2、unInstallServer.bat,双击可卸载服务
  3、主要文件WSDemoByTime.exe
  4、配置文件WSDemoByTime.exe.config(主要配置数量、间隔时间、数据连接等)
  运行效果,这里只演示了生成一个基本的记录文件。见图;
  C#制作Windows service服务系列二:演示一个定期执行的windows服务及调试(windows service)

  C#制作Windows service服务系列二:演示一个定期执行的windows服务及调试(windows service)
  

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

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

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

  具体步骤见下图:

   一、调试--附加到进程

  C#制作Windows service服务系列二:演示一个定期执行的windows服务及调试(windows service) 
  C#制作Windows service服务系列二:演示一个定期执行的windows服务及调试(windows service)

  二、设置断点,调试
  C#制作Windows service服务系列二:演示一个定期执行的windows服务及调试(windows service)
  三、如何修改windows service配置并生效?

      请注意,windows service的配置文件一般形如XXX.exe.Config,在本文中是WSDemoByTime.exe.Config,这个配置文件必须与WSDemoByTime.exe文件一致,并且修改配置文件后,需要重新启动windows serice才能使配置生效。
  C#制作Windows service服务系列二:演示一个定期执行的windows服务及调试(windows service)

  最后,附上源码,转载请注明出处,邀月 3w@live.cn 谢谢!

  源码下载

C#制作Windows service服务系列二:演示一个定期执行的windows服务及调试(windows service),布布扣,bubuko.com

C#制作Windows service服务系列二:演示一个定期执行的windows服务及调试(windows service)

上一篇:基于springboot的Flume整合


下一篇:window.open窗口居中和窗口最大化