对于用C# 开发windows服务,前几周可以说还是很茫然的阶段,最近下了翻功夫,稍微有了了解。虽然只是入门阶段但是依然想记录下来当中遇到的问题,我想对于对于想用用C#开发windows服务的同学,会有一定的帮助。
下面就具体的实例,进行分析。
1、首选我们需要打开VS2010,然后点击文件--》新建--》项目,选择Visual C#--》windows--》windows服务。服务命名为ServiceExample,然后我们就会在解决方案中见到如下界面:
Service1.cs名称在属性中可以修改
2.在Service1.c右键打开,快捷键F7,进入写代码页面,里面有两个重载函数,并在其中写一些简单的代码如下所示:
protectedoverridevoid OnStart(string[] args)
{
String s = System.DateTime.Now.ToString();
if (!File.Exists("D:\\statue.txt"))
{
StreamWriter sr = File.CreateText("D:\\statue.txt");
sr.WriteLine("在{0}成功|运行", s);
sr.Close();
}
else
{
StreamWriter sr = File.AppendText("D:\\statue.txt");
sr.WriteLine("在{0}成功运行", s);
sr.Close();
}
}
protectedoverridevoid OnStop()
{
String s1 = System.DateTime.Now.ToString();
if (!File.Exists("D:\\statue.txt"))
{
StreamWriter sr = File.CreateText("D:\\statue.txt");
sr.WriteLine("-------------------------STOP SRV---------------------");
sr.WriteLine("服务在{0}时间停止", s1);
sr.Close();
}
else
{
StreamWriter sr = File.AppendText("D:\\statue.txt");
sr.WriteLine("-------------------------STOP SRV---------------------");
sr.WriteLine("服务在{0}时间停止", s1);
sr.Close();
}
}
3.回到设计窗口点右键选择添加安装程序生成serviceInstaller1 serviceProcessInstaller1两个组件把serviceInstaller1的属性ServiceName改写为你的服务名,并把启动模式设置为AUTOMATIC,把serviceProcessInstaller1的属性account改写为LocalSystem
4.F6对程序进行编译,生成Service.exe文件。
至此一个简单的服务就算是完成了,下面对程序进行安装。(程序包在“D:\ServiceExample“)。
对服务的安装:
第一种:打开计算机Dos命令窗口,以管理员身份运行,键入以下命令:
而后输入命令:
InstallUtil.exe ServiceExample.exe
但是通常情况下是运行不成功的,为了这个神一样坑的问题,耗费了我二天的时间,才解决了这个问题。缺乏InstallUtil.exe文件,这个文件个人感觉类似于引导符,可以从其他服务处复制过来。
当运行成功后,Dos命令中会有相应的提示,我们也可以在“D:\\statue.txt”看到相应记录。
第二种:在VS2010中有相应的DOS平台:
在此处打开命令符和第一种一样,当时最后一处不同,直接输入:
InstallUtil ServiceExample.exe
此处不需要 InstallUtil.exe 引导。
服务的启动:
sc delete ServiceExample.
服务的删除:
cd c:\windows\system32\
sc delete ServiceExample.
查看服务;
services.msc 进入服务列表
在此处可以看到我们安装的服务。