今天跟大家介绍一下如何在win7系统下使用C#开发windows服务。主要的内容是参考了网上的一些资料及自己的研究所得。
1、首选我们需要打开VS2008,然后点击文件--》新建--》项目,选择Visual C#--》windows--》windows服务。如下图所示:
2、然后修改Service1.cs类。
我们需要重写OnStart和OnStop方法。代码如下所示:
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Diagnostics;
- using System.ServiceProcess;
- using System.IO;
- using System.Text;
- using System.Timers;
- using System.Threading;
-
-
-
-
-
-
-
-
-
-
-
-
-
- namespace WindowsServiceTest
- {
- public partial class Service1 : ServiceBase
- {
- public Service1()
- {
- InitializeComponent();
- }
-
- protected override void OnStart(string[] args)
- {
- EventLog.WriteEntry("我的服务启动--飞龙在天");
- writestr("服务启动");
- System.Timers.Timer t = new System.Timers.Timer();
- t.Interval = 1000;
- t.Elapsed += new System.Timers.ElapsedEventHandler(ChkSrv);
- t.AutoReset = true;
- t.Enabled = true;
- }
-
- protected override void OnStop()
- {
- writestr("服务停止");
- EventLog.WriteEntry("我的服务停止");
- }
-
-
-
-
-
-
- public void ChkSrv(object source, System.Timers.ElapsedEventArgs e)
- {
- int intSecond = e.SignalTime.Second;
- try
- {
-
- writestr("服务运行中:"+intSecond);
- Thread.Sleep(10000);
- }
- catch (Exception err)
- {
- writestr(err.Message);
- }
- }
-
-
-
-
-
-
- public void writestr(string readme)
- {
- StreamWriter dout = new StreamWriter(@"D:\" + "WindowsServiceTestLog.txt", true);
- dout.Write("\r\n事件:" + readme + "\r\n操作时间:" + System.DateTime.Now.ToString("yyy-MM-dd HH:mm:ss"));
- dout.Close();
- }
-
-
- }
- }
3、在Service1.cs的设计视图上右键“添加安装程序”。系统会自动生成“ProjectInstaller.cs”文件,在该文件的设计视图界面会有两个控件,一个是serviceProcessInstaller1,一个是serviceInstaller1。
如下图:
4、在ProjectInstaller.cs设计界面中,我们设置serviceProcessInstaller1和serviceInstaller1的属性。
serviceInstaller1属性中设置:
Description(系统服务的描述)
DisplayName (系统服务中显示的名称)
ServiceName(系统事件查看器里的应用程序事件中来源名称)
StartType(启动服务的方式,分为手动、自动和禁用)
serviceProcessInstaller1属性设置:
Account 下拉设置成 LocalSystem
5、注意:我们无法在VS2008中调试该工程,会弹出错误信息,如下图:
6、我们需要用InstallUtil.exe进行服务的安装,该文件可以在
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\
文件夹下找到。
7、我们将InstallUtil.exe复制到源程序的Debug文件夹下,然后我们以管理员身份运行VS2008命令提示。
注意:这里必须以管理员的身份运行,否则在安装服务时会出现以下错误:
在“安装”阶段发生异常。
System.Security.SecurityException: 未找到源,但未能搜索某些或全部事件日志。不可访问的日志: Security。
8、然后我们执行CMD命令,定位到源程序的Debug文件夹下,因为我的Debug文件夹在E盘,所以使用的dos命令如下:
- E:
- cd E:\Projects\WindowsServiceTest\WindowsServiceTest\bin\Debug
- InstallUtil WindowsServiceTest.exe
执行结果如下图所示:
9、然后我们在控制面板--》管理工具--》服务中会看到多了一个MyService的服务。我们可以看到服务名称为:ServiceTest,服务描述为:我的测试服务。
10、我们启动服务,然后打开D盘根目录,会看到多了一个名为:WindowsServiceTestLog.txt的文本文件。
打开该文本文件,会看到我们新建的服务每秒往该文本文件中写入了一行文本。
11、最后我们就可以卸载该服务了,我们在命令行中输入:
- InstallUtil -u WindowsServiceTest.exe
可以看到执行结果如下:
我们再到服务中查看,就会发现“MyService”已经被卸载掉了。
源码下载:
http://download.csdn.net/source/3488125