一个简单的C# WINDOWS服务程序

来源:互联网 发布:网易公开课有mac版吗 编辑:程序博客网 时间:2024/06/09 23:40

今天在做个程序,写一个通讯平台,功能是一个TCP的通讯平台,和应用网关通讯,一边是SQLSERVER的扩展存储过程,它从SQL库中提出相应的字段,通过UDP丢包给通讯平台,平台收到包后连应用网关,把数据包发过去并接收应用网关的回执。实现上准备写个windows服务程序,这样即使机器重起了,不用登陆也可以运行,不会影响到业务的正常运行。

    在做C# WINDOWS服务之前先熟悉一下C# WINDOWS服务程序在C#中的写法。

    1.在VS.NET2003中新建一个WINDOWS服务程序的项目WinSrv_A。

    2.更改SERVICE1.CS属性SERVICENAME为你所要建立的服务名称,在服务管理器->名称中你可以看到你的服务名

    3.按F7进入代码窗口,里面有2个重载函数是你要在其中写代码的一个是

  1. //protected override void OnStart(string[] args)  
  2. //{...} //这个函数是你启动服务后执行的函数  
  3. //protected override void OnStop()  
  4. //{...}//这个函数是你停止服务后执行的函数 

    我这里简单的做一个记录启动和终止服务的时间的功能。写如日志文档。              

  1. protected override void OnStart(string[] args)  
  2.             {  
  3.                    // TODO: 在此处添加代码以启动服务。  
  4.                   String s = System.DateTime.Now.ToString();  
  5.                   if(!File.Exists("c://srvlog.txt"))  
  6.                   {  
  7.                         StreamWriter sr = File.CreateText("c://bbbirdlog.txt");  
  8.                         sr.WriteLine("-------------------------START SRV---------------------");  
  9.                         sr.WriteLine ("我的新服务在{0}时间开始",s);  
  10.                        sr.WriteLine ("我可以写整型 {0} or 浮点型 {1},等等.",1, 4.2);  
  11.                        sr.Close();  
  12.                   }  
  13.                   else 
  14.                   {  
  15.                        StreamWriter sr = File.AppendText("c://bbbirdlog.txt");  
  16.                       sr.WriteLine("-------------------------START SRV---------------------");  
  17.                       sr.WriteLine ("我的新服务在{0}时间开始",s);  
  18.                        sr.WriteLine ("我可以写整型 {0} or 浮点型 {1},等等.",1, 4.2);  
  19.                        sr.Close();  
  20.                   }  
  21.              }  
  22.  
  23.                ///   
  24.               /// 停止此服务。  
  25.               ///   
  26.                protected override void OnStop()  
  27.                {  
  28.                        // TODO: 在此处添加代码以执行停止服务所需的关闭操作。  
  29.                         String s1 = System.DateTime.Now.ToString();  
  30.                         if(!File.Exists("c://srvlog.txt"))  
  31.                         {  
  32.                          StreamWriter sr = File.CreateText("c://bbbirdlog.txt");  
  33.                          sr.WriteLine("-------------------------STOP SRV---------------------");  
  34.                          sr.WriteLine ("我的新服务在{0}时间停止",s1);  
  35.                          sr.Close();  
  36.                         }  
  37.                         else 
  38.                         {  
  39.                          StreamWriter sr = File.AppendText("c://bbbirdlog.txt");  
  40.                          sr.WriteLine("-------------------------STOP SRV---------------------");  
  41.                          sr.WriteLine ("我的新服务在{0}时间停止",s1);  
  42.                          sr.Close();  
  43.                          }  
  44.                    } 

    4.回到设计窗口点右键选择添加安装程序生成serviceInstaller1和serviceProcessInstaller1两个组件

    把serviceInstaller1的属性ServiceName改写为你的服务程序名,并把启动模式设置为AUTOMATIC

    把serviceProcessInstaller1的属性account改写为LocalSystem

    5.编译链接生成服务程序。

    6.用.net framework工具INSTALLUTIL安装服务程序即可。

    这样,就用C#写了一个简单的C# WINDOWS服务程序。

 

windows 服务

文章分类:.net编程

1> 新建一个windows服务项目


2> 选中Service1 然后在视图界面,右键-->[添加安装程序]

 

3>

这时会出现ProjectInstaller.cs 文件,以及在ProjectInstaller 视图界面 有2个控件ITPUB个人空间+ROb(@O[)G
serviceInstaller1: 你可以修改它的Descirption 以及 ServiceName 这2个属性分别为你的 服务描述 和 服务名称ITPUB个人空间i4E)}qu#iz/I(Rl
serviceProcessInstaller1: 你需要修改Account属性,它代表运行此服务的帐户类型,一般你需要把他改为LocalSystem

 

到现在我们前期工作都完成,然后你可以在Service1.cs里面编写你的服务代码了,它分别有

OnStart(string[] arg)和OnStop() 方法,你可以在此编写你需要的执行的程序了.

 

然后我们运行.net的发布工具installutil .exe来添加到windows服务里面(该工具默认在C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727 目录下)

把下面代码 保存到txt文件,并且另存为bat文件,并且和你的exe文件放在一起,那么双击就可以直接安装服务了.

安装:

C#代码 复制代码
  1. @echo off   
  2. echo wjboy49服务安装   
  3. cd C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727   
  4. C:   
  5. installutil D:/Debug/WindowsServiceZol.exe         --注D:/Debug/是你windows服务的路径   
  6. echo 成功   
  7. echo. & pause  
 

 

 

卸载:

只要改成 installutil D:/Debug/WindowsServiceZol.exe /u就哦啦。

 

 

 

 

安装后自动启动,要在ProjectInstaller中加入下面的语句

C#代码 复制代码
  1. private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e)   
  2. {   
  3.         
  4.     Process p = new Process();   
  5.     p.StartInfo.FileName = "cmd.exe";   
  6.     p.StartInfo.UseShellExecute = false;   
  7.     p.StartInfo.RedirectStandardInput = true;   
  8.     p.StartInfo.RedirectStandardOutput = true;   
  9.     p.StartInfo.RedirectStandardError = true;   
  10.     p.StartInfo.CreateNoWindow = true;   
  11.     p.Start();   
  12.     string Cmdstring = "sc start wjboy49"//CMD命令   
  13.     p.StandardInput.WriteLine(Cmdstring);   
  14.     p.StandardInput.WriteLine("exit");   
  15.   
  16. }  
原创粉丝点击