使我的程序后台运行—Windows服务.ppt_第1页
使我的程序后台运行—Windows服务.ppt_第2页
使我的程序后台运行—Windows服务.ppt_第3页
使我的程序后台运行—Windows服务.ppt_第4页
使我的程序后台运行—Windows服务.ppt_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第第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 Sub Step5:重写OnStart方法,定义服务启 动时发生的情况。 1 Protected Overrides Sub OnStart(ByVal args() As String) 2 写入日志,描述信息为“In OnStart” 3 EventLog1.WriteEntry(“In OnStart“) 4 End Sub Step6:重写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服务应用实例:数服务应用实例:数 据库备份据库备份 应用背景:在服务器上常会有一些重要 的数据库,为了防止数据丢失或者因为 程序崩溃或其他异常情况导致数据损坏 ,可以定期备份数据库中的数据。本节 就来实现这个定期备份数据库的 Windows服务。 添加计时器添加计时器 首先新建一个Windows服务应用工程,并将计时器添 加到工程中来,在服务的构造函数中初始化计时器 。 【代码演示】 下面代码是服务的构造函数,完成计时器的初始化 。 1 Public Sub New( ) 2 MyBase.New( ) 3 此调用是Windows窗体设计器所必需的 4 InitializeComponent( ) 5 在InitializeComponent( )调用之后添加任何初始化 6 每一分钟就执行备份 7 Timer1.Interval = 60000 8 Timer1.Enabled =False 9 End Sub 重写重写OnStartOnStart方法和方法和OnStopOnStop方法方法 在服务启动和停止时分别启动计时器和停止计时器。 【代码演示】 下面代码重写OnStart方法和OnStop方法,实现计时 器的启动和停止。 1 Protected Overrides Sub OnStart(ByVal args() As String) 2 请在此处添加代码以启动您的服务。此方法应完成设置工作, 3 以使您的服务开始工作。 4 Timer1.Start( ) 5 End Sub 6 7 Protected Overrides Sub OnStop( ) 8 在此处添加代码以执行任何必要的拆解操作,从而停止您的服务 。 9 Timer1.Stop( ) 10 End Sub 该服务的重点代码在于计时器每隔一定的时间间隔(本例中是 一分钟)就执行数据库备份的工作。 下面代码是计时器的Elapsed事件过程,实现数据库的备份。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论