资源预览内容
第1页 / 共41页
第2页 / 共41页
第3页 / 共41页
第4页 / 共41页
第5页 / 共41页
第6页 / 共41页
第7页 / 共41页
第8页 / 共41页
第9页 / 共41页
第10页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第第2020章章 使我的程序后台运行使我的程序后台运行 WindowsWindows服务服务Windows服务是长时间运行的程序,这些程序执行 任务时不与用户交互。这些服务可以在计算机启 动时自动启动,可以暂停和重新启动而且不显示 任何用户界面。这些特性使Windows服务非常适合 在服务器上使用,每当需要使用不会影响在同一 台计算机上工作的其他用户的功能时也适用。还 可以在不同于登录用户的特定用户帐户或默认计 算机帐户的安全上下文中运行服务。章节内容章节内容20.1 什么是Windows服务20.2 创建我的第一个Windows服务20.3 安装和卸载服务20.4 启动和停止服务20.5 Windows服务应用实例:数据库 备份20.1 20.1 什么是什么是WindowsWindows服务服务Windows服务是可以长时间运行的程序 ,可以在计算机启动时自动启动,也可 以暂停、重新启动或者卸载,并且在执 行任务时不显示任何用户界面。20.2 20.2 创建我的第一个创建我的第一个WindowsWindows服服 务务3个步骤: 设置ServiceName属性; 为服务应用程序创建必需的安装程序; 重写OnStart和OnStop方法并为其指定代码 ,以对服务的行为方式进行自定义。示例:示例:自定义事件日志自定义事件日志Step1:新建一个Windows服务项目。单击菜 单栏中的【文件】【新建项目】命令,打 开【新建项目】窗口在【模板】列表框中选 择【Windows服务】,在【名称】文本框中输 入“FirstWinService”。在【解决方案资源管理器】窗口,可以 看到一个Service1.vb文件,这是 Windows服务的代码文件,我们将其重 命名为FirstWinService.vb。Step2:在【属性】窗口中,设置服务 的ServiceName属性,如下图。该属性 用于对系统标识服务的名称。WindowsWindows服务的其他属服务的其他属性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.SourceExists(“MySource“) Then 7 System.Diagnostics.EventLog.CreateEventSource(“MySource“, _ 8 “MyNewLog“) 9 End If 10 设置EventLog组件的源 11 EventLog1.Source = “MySource“ 12 设置EventLog组件的日志名称 13 EventLog1.Log = “MyNewLog“ 14 End SubStep5:重写OnStart方法,定义服务启 动时发生的情况。1 Protected Overrides Sub OnStart(ByVal args() As String) 2 写入日志,描述信息为“In OnStart” 3 EventLog1.WriteEntry(“In OnStart“) 4 End SubStep6:重写OnStop方法,定义服务停 止时发生的情况。1 Protected Overrides Sub OnStop( ) 2 写入日志,描述信息为“In OnStop”3 EventLog1.WriteEntry(“In OnStop.“) 4 End Sub除此之外,还可以重写OnPause、 OnContinue和OnShutdown方法来定义当 服务暂停、继续和系统关机时的处理。至此,我们的FirstWinService服务就 基本完成了。单击菜单栏中的【生成】【生成解决 方案】来生成项目。注意,不要通过按 【F5】键来运行项目,因为Windows服 务项目不能以这种方式来运行。20.3 20.3 安装和卸载服务安装和卸载服务Windows服务编写完成以后,还需要安 装以后才能启动。我们需要为 FirstWinService添加一个安装程序, 这是必需的。添加组件添加组件在【解决方案资源管理器】窗口中,右击【 FirstWinService.vb】,在打开的右键菜单 中单击【视图设计器】,打开视图设计窗口 。在该窗口的任意一个空白的地方右击,在打 开的右键菜单中单击【添加安装程序】。此时,项目中就添加了一个新类 ProjectInstaller和两个安装组件 ServiceProcessInstaller和 ServiceInstaller,并且服务的属性值被复 制到组件。设置设置ServiceInstaller1ServiceInstaller1组件组件的属性的属性单击ServiceInstaller1组件,打开其 【属性】窗口,验证ServiceName属性 的值已为与服务本身的ServiceName属 性的值相同,并将StartType属性设置 为Automatic。该属性用于确定启动服务的方式,可选 值有以下几个。 Manual:服务安装后,必须手动启动。 Automatic:每次计算机重新启动时,服务 都会自动启动。 Disabled:服务无法启动。设置设置ServiceProcessInstaller1ServiceProcessInstaller1组组 件的属性件的属性在设计器中单击ServiceProcessInstaller1,打 开其【属性】窗口,将Account属性设置为 LocalService。该属性用于设置服务运行的安全上下文,可选值 有以下几个。 User,当服务已安装并且在由网络上的单一用户指定的帐户的上下 文中运行时,该类型将使系统要求提供有效的用户名和密码。 LocalService,该类型在用作本地计算机上的非特权用户并向任意 远程服务器显示匿名凭据的帐户的上下文中运行。 LocalSystem,该类型在提供多种本地特权并向任意远程服务器显 示计算机凭据的帐户的上下文中运行。 NetworkService,该类型在用作本地计算机上的非特权用户并向任 意远程服务器显示计算机凭据的帐户的上下文中运行。添加安装项目添加安装项目在【解决方案资源管理器】窗口中,右击解 决方案,在打开的右键菜单中单击【添加】 【新建项目】。在打开的【新建项目】窗口中的【项目类型 】列表框中选择【安装和部署】项目,在【 模板】列表框中选择【安装项目】,在【名 称】文本框中输入“MyServiceSetup”,【 解决方案】下拉列表框中选择【添入解决方 案】。单击【确定】按钮后,安装项目随即添加到 当前解决方案中。将将WindowsWindows服务项目的输出服务项目的输出 MyNewService.exeMyNewService.exe添加到安装项目中添加到安装项目中在【解决方案资源管理器】窗口中,右击【 MyServiceSetup】项目,在打开的右键菜单 中单击【添加】【项目输出】命令,打开 【添加项目输出组】窗口。在【项目】下拉列表框中选择【 MyNewService】,在其列表框中选择【主输 出】。单击【确定】按钮后,MyNewService 的主输出的项目项被添加到安装项目中。添加自定义操作以安装添加自定义操作以安装 MyNewService.exeMyNewService.exe文件文件在【解决方案资源管理器】窗口中右击安 装项目,在打开的右键菜单中单击【视图 】【自定义操作】打开【自定义操作】 编辑器。在【自定义操作】编辑器中右击 【自定义操作】选项,在打开的右键菜单 中单击【添加自定义操作】。之后打开【选择项目中的项】窗口。在 【查找范围】下拉列表框中选择【应用 程序文件夹】,在其列表框中选择【 MyNewService 的主输出(活动)】。 单击【确定】按钮后,主输出被添加到 自定义操作的所有4个节点,即安装、 提交、回滚和卸载。在【解决方案资源管理器】窗口中,右 击【MyServiceSetup】项目,在打开的 右键菜单中单击【生成】命令,以生成 该项目。至此,Windows服务的安装程序就完成 了。利用安装项目安装利用安装项目安装WindowsWindows服务服务右击【解决方案资源管理器】窗口中的 【MyServiceSetup】安装项目,在打开 的右键菜单中单击【安装】,打开安装 向导窗口。单击【下一步】,选择安装文件夹。单击【下一步】,确认安装。单击【下一步】,开始安装过程。安装完成后,单击【关闭】按钮。此时,打开【服务器资源管理器】窗口 ,展开服务器节点,在服务中即可看到 FirstWinService服务。也可以右击【我的电脑】,在打开的右 键菜单中单击【管理】,打开【计算机 管理】窗口,在左侧列表框中单击【服 务和应用程序】下的【服务】,也可以 看到FirstWinService服务。卸载服务卸载服务一种是打开【控制面板】,双击【添加 或删除程序】,找到该安装文件,单击 【删除】按钮。另一种方法是找到安装项目的msi文件 ,该文件位于安装项目的Release文件 夹下。20.4 20.4 启动和停止服务启动和停止服务服务安装以后,可以手动的启动或者停 止。在【计算机管理】窗口,右击该服 务,在打开的右键菜单中单击【启动】 或者【停止】即可。由于FirstWinService在启动和停止的 时候均会写入日志,因此可以查看服务 的事件日志输出。在【计算机管理】窗 口中,在左侧列表框中单击【事件查看 器】选项,即可看到MyNewLog,这是我 们自定义的日志源。打开MyNewLog,即 可看到写入的日志信息。右击该日志信息,在打开的右键菜单中 单击【属性】,可以看到该日志信息的 描述。20.5 Windows20.5 Windows服务应用实例:数服务应用实例:数 据库备份据库备份应用背景:在服务器上常会有一些重要 的数据库,为了防止数据丢失或者因为 程序崩溃或其他异常情况导致数据损坏 ,可以定期备份数据库中的数据。本节 就来实现这个定期
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号