【vb精品源码栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。
网学会员整理了vb精品源码-使我的程序后台运行—Windows服务 - 其它资料的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
第20章 使我的程序后台运 行——Windows服务Windows服务是长时间运行的程序,这些程序执行任务时不与用户交互。
这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。
这些特性使Windows服务非常适合在服务器上使用,每当需要使用不会影响在同一台计算机上工作的其他用户的功能时也适用。
还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务。
章节内容 20.1 什么是Windows服务 20.2 创建我的第一个Windows服务 20.3 安装和卸载服务 20.4 启动和停止服务 20.5 Windows服务应用实例:数据库 备份20.1 什么是Windows服务 Windows服务是可以长时间运行的程序 ,可以在计算机启动时自动启动,也可 以暂停、重新启动或者卸载,并且在执 行任务时不显示任何用户界面。
示例:自定义事件日志 Step1:新建一个Windows服务项目。
单击菜 单栏中的【文件】→【新建项目】命令,打 开【新建项目】窗口在【模板】列表框中选 择【Windows服务】,在【名称】文本框中输 入“FirstWinService”。
在【解决方案资源管理器】窗口,可以 看到一个Service1.
vb文件,这是 Windows服务的代码文件,我们将其重 命名为FirstWinService.
vb。
Step2:在【属性】窗口中,设置服务 的ServiceName属性,如下图。
该属性 用于对系统标识服务的名称。
Windows服务的其他属性 CanStop:True指示服务将接受停止运 行的请求;False指示禁止停止运行服 务。
CanShutdown:True指示服务希望在运 行该服务的计算机关闭时收到通知,以 便能够调用OnShutdown过程。
CanPauseAndContinue:True指示服务 将接受暂停或继续运行的请求;False 指示禁止服务暂停运行和继续运行。
CanHandlePowerEvent:True指示服务可以处 理有关计算机电源状态更改的通知;False指 示禁止服务得到有关这些更改的通知。
AutoLog:True表示在服务执行操作时将信息 项写入应用程序的事件日志;False表示禁用 此功能。
这些属性用于确定服务的工作机制。
默认情 况下,AutoLog设置为True。
当CanStop或 CanPauseAndContinue设置为False时,服务 控制管理器会禁用相应的停止、暂停或继续 服务的菜单选项。
Step3:属性设置完毕后,我们还需要 为OnStart和OnStop过程填写所需的处 理。
由于该服务要实现自定义事件日志的功 能,这可以由EventLog组件来实现。
在 工具箱的【组件】选项卡,将EventLog 组件拖到服务设计器中。
Step4:编写构造函数以定义一个用户 事件日志。
可以选择方法声明下拉列表 中的New以添加一个空的New方法。
下面是构造函数的代码,定义了一个用户事件日志。
1 Public Sub New 2 调用基类的构造函数 3 MyBase.New 4 InitializeComponent 5 创建一个系统日志源 6 If Not System.Diagnostics.EventLog.SourceExistsMySource Then 7 System.Diagnostics.EventLog.CreateEventSourceMySource _ 8 MyNewLog 9 End If 10 设置EventLog组件的源 11 EventLog1.Source MySource 12 设置EventLog组件的日志名称 13 EventLog1.Log MyNewLog 14 End Sub Step5:重写OnStart方法,定义服务启 动时发生的情况。
1 Protected Overrides Sub OnStartByVal args As String2 写入日志,描述信息为“In OnStart”3 EventLog1.WriteEntryIn OnStart4 End Sub Step6:重写OnStop方法,定义服务停 止时发生的情况。
1 Protected Overrides Sub OnStop 2 写入日志,描述信息为“In OnStop”3 EventLog1.WriteEntryIn OnStop.4 End Sub 除此之外,还可以重写OnPause、 OnContinue和OnShutdown方法来定义当 服务暂停、继续和系统关机时的处理。
至此,我们的FirstWinService服务就 基本完成了。
单击菜单栏中的【生成】→【生成解决 方案】来生成项目。
注意,不要通过按 【F5】键来运行项目,因为Windows服 务项目不能以这种方式来运行。
20.3 安装和卸载服务 Windows服务编写完成以后,还需要安 装以后才能启动。
我们需要为 FirstWinService添加一个安装程序, 这是必需的。
添加组件 在【解决方案资源管理器】窗口中,右击【 FirstWinService.
vb】,在打开的右键菜单 中单击【视图设计器】,打开视图设计窗口 。
在该窗口的任意一个空白的地方右击,在打 开的右键菜单中单击【添加安装程序】。
此时,项目中就添加了一个新类 ProjectInstaller和两个安装组件 ServiceProcessInstaller和 ServiceInstaller,并且服务的属性值被复 制到组件。
设置ServiceInstaller1组件的属性 单击ServiceInstaller1组件,打开其 【属性】窗口,验证ServiceName属性 的值已为与服务本身的ServiceName属 性的值相同,并将StartType属性设置 为Automatic。
该属性用于确定启动服务的方式,可选 值有以下几个。
Manual:服务安装后,必须手动启动。
Automatic:每次计算机重新启动时,服务 都会自动启动。
Disabled:服务无法启动。
设置ServiceProcessInstaller1组 件的属性 在设计器中单击ServiceProcessInstaller1,打 开其【属性】窗口,将Account属性设置为 LocalService。
该属性用于设置服务运行的安全上下文,可选值 有以下几个。
User,当服务已安装并且在由网络上的单一用户指定的帐户的上下 文中运行时,该类型将使系统要求提供有效的用户名和密码。
LocalService,该类型在用作本地计算机上的非特权用户并向任意 远程服务器显示匿名凭据的帐户的上下文中运行。
LocalSystem,该类型在提供多种本地特权并向任意远程服务器显 示计算机凭据的帐户的上下文中运行。
NetworkService,该类型在用作本地计算机上的非特权用户并向任 意远程服务器显示计算机凭据的帐户的上下文中运行。
添加安装项目 在【解决方案资源管理器】窗口中,右击解 决方案,在打开的右键菜单中单击【添加】 →【新建项目】。
在打开的【新建项目】窗口中的【项目类型 】列表框中选择【安装和部署】项目,在【 模板】列表框中选择【安装项目】,在【名 称】文本框中输入“MyServiceSetup”,【 解决方案】下拉列表框中选择【添入解决方 案】。
单击【确定】按钮后,安装项目随即添加到 当前解决方案中。