如何:以编程方式编写服务
如果选择不使用 Windows 服务项目模板,可以通过自行设置继承和其他基础结构元素来编写自己的服务。 当以编程方式创建服务时,必须执行模板原本可以会为您处理的几个步骤:
必须将服务类设置为从 ServiceBase 类继承。
必须为服务项目创建一个 Main 方法,定义要运行的服务并对这些服务调用 Run 方法。
必须重写 OnStart 和 OnStop 过程,并填写希望它们运行的任何代码。
提示
Visual Studio 标准版中不提供“Windows 服务”模板及相关功能。
以编程方式编写服务
创建一个空项目,然后按下列这些步骤创建到所需命名空间的引用:
在**“解决方案资源管理器”中右击“引用”节点,再单击“添加引用”**。
在**“.NET Framework”选项卡中,滚动到“System.dll”并单击“选择”**。
滚动到**“System.ServiceProcess.dll”并单击“选择”**。
单击**“确定”**。
添加一个类并将其配置为从 ServiceBase 继承:
Public Class UserService1 Inherits System.ServiceProcess.ServiceBase End Class
public class UserService1 : System.ServiceProcess.ServiceBase { }
添加下列代码来配置服务类:
Public Sub New() Me.ServiceName = "MyService2" Me.CanStop = True Me.CanPauseAndContinue = True Me.AutoLog = True End Sub
public UserService1() { this.ServiceName = "MyService2"; this.CanStop = true; this.CanPauseAndContinue = true; this.AutoLog = true; }
为类创建 Main 方法,并使用它来定义类将包含的服务;userService1 是类的名称:
Shared Sub Main() System.ServiceProcess.ServiceBase.Run(New UserService1) End Sub
public static void Main() { System.ServiceProcess.ServiceBase.Run(new UserService1()); }
重写 OnStart 方法,并定义希望在服务启动时发生的任何处理。
Protected Overrides Sub OnStart(ByVal args() As String) ' Insert code here to define processing. End Sub
protected override void OnStart(string[] args) { // Insert code here to define processing. }
重写要为其定义自定义处理的其他任何方法,并编写代码以确定服务在各种情况中应采取的操作。
添加服务应用程序所必需的安装程序。 有关更多信息,请参见如何:将安装程序添加到服务应用程序。
通过从**“生成”菜单中选择“生成解决方案”**来生成项目。
提示
不要通过按 F5 来运行项目,不能以这种方式运行服务项目。
创建一个安装项目和自定义操作来安装服务。 有关示例,请参见演练:在组件设计器中创建 Windows 服务应用程序。
安装服务。 有关更多信息,请参见如何:安装和卸载服务。