zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C#编写Windows服务实例代码

2023-06-13 09:15:06 时间
MicrosoftWindows服务(即,以前的NT服务)使您能够创建在它们自己的Windows会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这使服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用。还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务。

使用MicrosoftVisualStudio2012可以很方便的创建一个Windows服务,本例实现一个向D盘的txt文件里,写入系统时间的Windows服务。

新建一个WindowsServices工程:

 

工程创建好之后,默认会有一个Services1.cs文件,删掉此文件,重新添加一个新Item

右击新添加的这个文件,选择Viewcode,可以看到,有两个函数OnStart和OnStop,OnStart函数在启动服务时执行,OnStop函数在停止服务时执行。

这两个函数的代码如下:

复制代码代码如下:


usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Diagnostics;
usingSystem.Linq;
usingSystem.ServiceProcess;
usingSystem.Text;
usingSystem.Threading.Tasks;
usingSystem.IO;

namespaceMyFirstWindowsService
{
   partialclassMyWindowsService:ServiceBase
   {
       publicMyWindowsService()
       {
           InitializeComponent();
       }

       protectedoverridevoidOnStart(string[]args)
       {
           //TODO:Addcodeheretostartyourservice.
           FileStreamfileStream=newFileStream(@"D:\MyWindowsService.txt",FileMode.OpenOrCreate,FileAccess.Write);

           StreamWriterstreamWriter=newStreamWriter(fileStream);

           streamWriter.BaseStream.Seek(0,SeekOrigin.End);

           streamWriter.WriteLine("Myservicestarted"+DateTime.Now.ToString()+"\n");

           streamWriter.Flush();

           streamWriter.Close();

           fileStream.Close();
       }

       protectedoverridevoidOnStop()
       {
           //TODO:Addcodeheretoperformanytear-downnecessarytostopyourservice.
           FileStreamfileStream=newFileStream(@"D:\MyWindowsService.txt",FileMode.OpenOrCreate,FileAccess.Write);

           StreamWriterstreamWriter=newStreamWriter(fileStream);

           streamWriter.BaseStream.Seek(0,SeekOrigin.End);

           streamWriter.WriteLine("Myservicestopped"+DateTime.Now.ToString()+"\n");

           streamWriter.Flush();

           streamWriter.Close();

           fileStream.Close();
       }
   }
}

之后需要新建一个安装组件MyWindowsServiceProjectInstaller(右击MyWindowsService.cs这个文件选择viewdesiner,然后选择AddInstaller),需要将MyFirstWindowsServiceProcessInstaller的account属性设置为localservice.

编写批处理文件:

 安装服务批处理:

复制代码代码如下:


 %SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exeC:\Users\gaoja1\Desktop\MyWindowsService\MyFirstWindowsService\bin\Debug\MyFirstWindowsService.exe
 NetStartServiceTest
 scconfigServiceTeststart=auto

卸载服务批处理:

复制代码代码如下:
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe/uC:\Users\gaoja1\Desktop\MyWindowsService\MyFirstWindowsService\bin\Debug\MyFirstWindowsService.exe

服务安装好之后:





服务启动之后可以在D盘看到一个txt的文件,里面记录了服务的启动时间.