今天在做个程序,写一个通讯平台,功能是一个TCP的通讯平台,和应用网关通讯,一边是SQLSERVER的扩展存储过程,它从SQL库中提出相应的字段,通过UDP丢包给通讯平台,平台收到包后连应用网关,把数据包发过去并接收应用网关的回执。实现上准备写个windows服务程序,这样即使机器重起了,不用登陆也可以运行,不会影响到业务的正常运行。
在做C# WINDOWS服务之前先熟悉一下C# WINDOWS服务程序在C#中的写法。
1.在VS.NET2003中新建一个WINDOWS服务程序的项目WinSrv_A。
2.更改SERVICE1.CS属性SERVICENAME为你所要建立的服务名称,在服务管理器->名称中你可以看到你的服务名
3.按F7进入代码窗口,里面有2个重载函数是你要在其中写代码的一个是
- //protected override void OnStart(string[] args)
- //{...} //这个函数是你启动服务后执行的函数
- //protected override void OnStop()
- //{...}//这个函数是你停止服务后执行的函数
我这里简单的做一个记录启动和终止服务的时间的功能。写如日志文档。
- protected override void OnStart(string[] args)
- {
- // TODO: 在此处添加代码以启动服务。
- String s = System.DateTime.Now.ToString();
- if(!File.Exists("c:\\srvlog.txt"))
- {
- StreamWriter sr = File.CreateText("c:\\bbbirdlog.txt");
- sr.WriteLine("-------------------------START SRV---------------------");
- sr.WriteLine ("我的新服务在{0}时间开始",s);
- sr.WriteLine ("我可以写整型 {0} or 浮点型 {1},等等.",1, 4.2);
- sr.Close();
- }
- else
- {
- StreamWriter sr = File.AppendText("c:\\bbbirdlog.txt");
- sr.WriteLine("-------------------------START SRV---------------------");
- sr.WriteLine ("我的新服务在{0}时间开始",s);
- sr.WriteLine ("我可以写整型 {0} or 浮点型 {1},等等.",1, 4.2);
- sr.Close();
- }
- }
- ///
- /// 停止此服务。
- ///
- protected override void OnStop()
- {
- // TODO: 在此处添加代码以执行停止服务所需的关闭操作。
- String s1 = System.DateTime.Now.ToString();
- if(!File.Exists("c:\\srvlog.txt"))
- {
- StreamWriter sr = File.CreateText("c:\\bbbirdlog.txt");
- sr.WriteLine("-------------------------STOP SRV---------------------");
- sr.WriteLine ("我的新服务在{0}时间停止",s1);
- sr.Close();
- }
- else
- {
- StreamWriter sr = File.AppendText("c:\\bbbirdlog.txt");
- sr.WriteLine("-------------------------STOP SRV---------------------");
- sr.WriteLine ("我的新服务在{0}时间停止",s1);
- sr.Close();
- }
- }
4.回到设计窗口点右键选择添加安装程序生成serviceInstaller1和serviceProcessInstaller1两个组件
把serviceInstaller1的属性ServiceName改写为你的服务程序名,并把启动模式设置为AUTOMATIC
把serviceProcessInstaller1的属性account改写为LocalSystem
5.编译链接生成服务程序。
6.用.net framework工具INSTALLUTIL安装服务程序即可。
这样,就用C#写了一个简单的C# WINDOWS服务程序。【编辑推荐】