对于用C# 开发windows服务,前几周可以说还是很茫然的阶段,最近下了翻功夫,稍微有了了解。虽然只是入门阶段但是依然想记录下来当中遇到的问题,我想对于对于想用用C#开发windows服务的同学,会有一定的帮助。

  下面就具体的实例,进行分析。

1、首选我们需要打开VS2010,然后点击文件--》新建--》项目,选择Visual C#--》windows--》windows服务。服务命名为ServiceExample,然后我们就会在解决方案中见到如下界面:

220807103.jpg

             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命令窗口,以管理员身份运行,键入以下命令:

    221253653.jpg

 

   而后输入命令:

   InstallUtil.exe  ServiceExample.exe

但是通常情况下是运行不成功的,为了这个神一样坑的问题,耗费了我二天的时间,才解决了这个问题。缺乏InstallUtil.exe文件,这个文件个人感觉类似于引导符,可以从其他服务处复制过来。

当运行成功后,Dos命令中会有相应的提示,我们也可以在“D:\\statue.txt看到相应记录。

第二种:在VS2010中有相应的DOS平台:

 

221434913.jpg

    在此处打开命令符和第一种一样,当时最后一处不同,直接输入:

    InstallUtil  ServiceExample.exe

    此处不需要 InstallUtil.exe 引导。

   服务的启动:

   sc delete ServiceExample.

   服务的删除:

   cd  c:\windows\system32\

   sc delete ServiceExample.

   查看服务;

   services.msc      进入服务列表

   在此处可以看到我们安装的服务。