.NET自动服务程序—C#(一)
2008-04-24 16:23
543 查看
.NET自动服务程序—C#(一) 追风(VisualSW) 应用程序开发中,常常需要实现这样一种功能:让服务器在每天的特定时刻运行固定的程序(或者实现固定的操作),比如让系统在每天的2:00备份数据库数据。要实现这样的功能,我们可以使用Windows服务(Windows service)。Windows service是一种系统自动的、无人值守的程序(仅存在于Windows NT、2000和XP操作系统中),它能够在系统启动时开始运行。用户可以通过Service Control Manager (SCM) applet或者一些特殊的service-control应用来访问Windows service,使服务在没有用户登录到系统之前执行。 在.NET出现以前,编写Windows服务是VC++、Delphi才能办到的事情,VB必须使用第三方控件才可以办到,而且编写起来特别的复杂。使用Microsoft®.NET Framework,我们可通过创建作为服务安装的应用程序来方便地创建Windows服务。 设计:一个Windows服务程序,按照配置文件中的配置,在指定时刻运行指定程序。流程:启动服务à读取配置文件à启动定时器定时器定时触发(比如每隔30秒)à循环需要运行组件时间à时间到à运行指定程序编写:创建一个Windows Service将Server1.cs更名为SchedulerServer.cs,双击SchedulerServer.cs打开设计页面,从工具栏的组件中拖Timer控件。更名为SchedulerTimer,并设置Enabled为flase。注意必须是Components里面的Timer控件,Windows Forms里面的Timer控件不行。 F7浏览代码可以看到如下代码 服务器启动的时候运行:/// <summary>/// Set things in motion so your service can do its work./// </summary>protected override void OnStart(string[] args){ // TODO: Add code here to start your service.} 服务停止的时候运行:/// <summary>/// Stop this service./// </summary>protected override void OnStop(){ // TODO: Add code here to perform any tear-down necessary to stop your service.} 添加写日志函数,用来记录服务的日志:public static void WriteLog(string strLog) { string strPath; strPath=System.Environment.SystemDirectory; strPath+=@"SchedulerServer.txt"; FileStream fs = new FileStream(strPath,FileMode.OpenOrCreate,FileAccess.Write); StreamWriter m_streamWriter = new StreamWriter(fs); m_streamWriter.BaseStream.Seek(0, SeekOrigin.End); m_streamWriter.WriteLine(strLog); m_streamWriter.Flush(); m_streamWriter.Close(); fs.Close(); } 自动服务配置文件配置文件保存在系统目录,Windows 2000为WinNTSystem32,文件名为SchedulerServer.xml,存储了自动服务的所有配置信息,下面我们来看SchedulerServer.xml的格式:<SchedulerServer> <AutoServer> <FilePath>C:AutoBackup.dll</FilePath> <RunTime>02:00</RunTime> </AutoServer> <AutoServer> <FilePath>D:AutoMail.dll</FilePath> <RunTime>03:00</RunTime> </AutoServer></SchedulerServer> FilePath设置需要运行的组件的路径RunTime设置需要运行的时间如果有多个程序需要运行,只需要添加<AutoServer>节点 程序中添加读取配置文件函数:private bool ReadConf() { try { string strPath; XmlDocument xmldoc=new XmlDocument(); XmlNodeList xmlnd; strPath=System.Environment.SystemDirectory+@"SchedulerServer.xml"; xmldoc.Load(strPath); xmlnd=xmldoc.SelectNodes("SchedulerServer/AutoServer"); arrConf=new String[2,xmlnd.Count]; for(int i=0;i<xmlnd.Count;i++) { arrConf[0,i]=xmlnd[i].SelectSingleNode("FilePath").InnerXml.Trim(); arrConf[1,i]=xmlnd[i].SelectSingleNode("RunTime").InnerXml.Trim(); } return true; } catch(Exception e) { WriteLog(DateTime.Now.ToString()); WriteLog("Read Configuration Error:"); WriteLog(e.ToString()); return false; } }
相关文章推荐
- [转]C#创建服务及使用程序自动安装服务,.NET创建一个即是可执行程序又是Windows服务的exe
- .NET自动服务程序—C#
- C#创建服务及使用程序自动安装服务,.NET创建一个即是可执行程序又是Windows服务的exe
- C#创建服务及使用程序自动安装服务,.NET创建一个即是可执行程序又是Windows服务的exe
- .NET自动服务程序—C#(二)
- .NET自动服务程序—C#(一)
- .NET自动服务程序—C#
- C#创建服务及使用程序自动安装服务,.NET创建一个即是可执行程序又是Windows服务的exe
- .NET自动服务程序—C#(二)
- .net自动服务程序—C#(一)
- .NET自动服务程序—C#
- .NET自动服务程序—C#
- .NET自动服务程序—C#(二)
- .NET自动服务程序—C#(一)
- C#创建服务及使用程序自动安装服务,.NET创建一个即是可执行程序又是Windows服务的exe(转)
- .NET自动服务程序—C#
- C#创建服务及使用程序自动安装服务
- C++检查注册表中.net版本号,自动安装.net安装包,然后再执行C#程序
- .NET自动服务程序—C#
- .NET 和智能传输服务API编写自动更新程序