1、新建项目
打开VS—>文件—>新建—>项目—>Visual C#—>Windows—>Windows服务->起个名儿—>确定 (如图)
2、添加Timer组件
从工具箱—>"组件"下拉列表中拖动一个Timer控件到设计视图上
注意:看看这个Timer控件的属性中的命名空间是什么,如果是System.Timers.Timer那就对了;如果是System.Windows.Froms.Timer那就错了(用这种Timer则服务运行时不会执行我们编写的代码)。解决方法:删除这个Timer;在工具箱上的组件列表上右键,单击”选择项”出现”选择工具箱项”对话框,然后在.net Framwork选项卡下找到命名空间为System.Timers的那个Timer控件,钩选确认即可.这时新的Timer控件出现在了工具箱的组件列表中(如图)。现在拖动一个Timer控件到设计表面上。
3、设置Timer属性,主要是设置Interval属性(单位为毫秒),即间隔多少时间执行服务
4、双击Timer进入代码视图,在事件方法里添加我们要执行的代码
private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//服务运行要执行的代码}
例如:我要每一分钟在我的数据库test下的testservice表中插入一条记录,则可以将Timer的Interval属性设置为1000,并在Elapsed方法下加入以下代码:
SqlConnection conn = new SqlConnection("server=192.168.1.143;database=test;uid=sa;pwd=123");
SqlCommand comm = new SqlCommand("insert into testservice(number) values('china')", conn);
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
另外,可以在OnStart和OnStop方法中加入对Timer的控制
protected override void OnStart(string[] args)
{// TODO: 在此处添加代码以启动服务。
this.timer1.Enabled = true
}protected override void OnStop()
{
// TODO: 在此处添加代码以执行停止服务所需的关闭操作。
this.timer1.Enabled = false;
}
5、将这个服务程序切换到设计视图,右击设计视图选择“添加安装程序”,VS将自动添加两个控件:serviceProcessInstaller1和serviceInstaller1。接下来设置两个控件的属性,主要设置:
1)serviceInstaller1的ServiceName属性(即你的服务的名称)
2)serviceInstaller1的StartType属性设置为Automatic(自动)
3)serviceProcessInstaller1的Account属性设置为:LocalSystmem
6、编译生成EXE文件(在bin\debug\下)
7、注册我们创建的服务
以命令行形式调用 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727目录下的InstallUtil.exe 来注册我们项目中bin\debug目录下的服务程序
注意:调用时注意路径一定要正确,比如:我的调用如下:
C:\>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe C:\FirstWindowsService\FirstWindowsService\bin\Debug\FirstWindowsService.exe 回车
(如图)
![]()
8、现在,你可在控制面板-管理工具-服务下看到你的服务了(先刷新一下,即可看到)并且可以看到其执行效果。
注意:如果你修改了这个服务,但路径没有变化的话是不需要重新注册服务的,只需要先暂停服务,重新生成exe,再启动服务;如果路径发生了变化,需要先卸载这个服务(使用InstallUtil.exe /u 命令,注意路径),然后再重新注册这个服务,