使我的程序后台运行-Windows服务.ppt

上传人:xt****7 文档编号:5186761 上传时间:2020-01-22 格式:PPT 页数:41 大小:1.70MB
返回 下载 相关 举报
使我的程序后台运行-Windows服务.ppt_第1页
第1页 / 共41页
使我的程序后台运行-Windows服务.ppt_第2页
第2页 / 共41页
使我的程序后台运行-Windows服务.ppt_第3页
第3页 / 共41页
点击查看更多>>
资源描述
第20章使我的程序后台运行 Windows服务 Windows服务是长时间运行的程序 这些程序执行任务时不与用户交互 这些服务可以在计算机启动时自动启动 可以暂停和重新启动而且不显示任何用户界面 这些特性使Windows服务非常适合在服务器上使用 每当需要使用不会影响在同一台计算机上工作的其他用户的功能时也适用 还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务 章节内容 20 1什么是Windows服务20 2创建我的第一个Windows服务20 3安装和卸载服务20 4启动和停止服务20 5Windows服务应用实例 数据库备份 20 1什么是Windows服务 Windows服务是可以长时间运行的程序 可以在计算机启动时自动启动 也可以暂停 重新启动或者卸载 并且在执行任务时不显示任何用户界面 20 2创建我的第一个Windows服务 3个步骤 设置ServiceName属性 为服务应用程序创建必需的安装程序 重写OnStart和OnStop方法并为其指定代码 以对服务的行为方式进行自定义 示例 自定义事件日志 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方法 下面是构造函数的代码 定义了一个用户事件日志 1PublicSubNew 2 调用基类的构造函数3MyBase New 4InitializeComponent 5 创建一个系统日志源6IfNotSystem Diagnostics EventLog SourceExists MySource Then7System Diagnostics EventLog CreateEventSource MySource 8 MyNewLog 9EndIf10 设置EventLog组件的源11EventLog1 Source MySource 12 设置EventLog组件的日志名称13EventLog1 Log MyNewLog 14EndSub Step5 重写OnStart方法 定义服务启动时发生的情况 1ProtectedOverridesSubOnStart ByValargs AsString 2 写入日志 描述信息为 InOnStart 3EventLog1 WriteEntry InOnStart 4EndSub Step6 重写OnStop方法 定义服务停止时发生的情况 1ProtectedOverridesSubOnStop 2 写入日志 描述信息为 InOnStop 3EventLog1 WriteEntry InOnStop 4EndSub 除此之外 还可以重写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 解决方案 下拉列表框中选择 添入解决方案 单击 确定 按钮后 安装项目随即添加到当前解决方案中 将Windows服务项目的输出MyNewService exe添加到安装项目中 在 解决方案资源管理器 窗口中 右击 MyServiceSetup 项目 在打开的右键菜单中单击 添加 项目输出 命令 打开 添加项目输出组 窗口 在 项目 下拉列表框中选择 MyNewService 在其列表框中选择 主输出 单击 确定 按钮后 MyNewService的主输出的项目项被添加到安装项目中 添加自定义操作以安装MyNewService exe文件 在 解决方案资源管理器 窗口中右击安装项目 在打开的右键菜单中单击 视图 自定义操作 打开 自定义操作 编辑器 在 自定义操作 编辑器中右击 自定义操作 选项 在打开的右键菜单中单击 添加自定义操作 之后打开 选择项目中的项 窗口 在 查找范围 下拉列表框中选择 应用程序文件夹 在其列表框中选择 MyNewService的主输出 活动 单击 确定 按钮后 主输出被添加到自定义操作的所有4个节点 即安装 提交 回滚和卸载 在 解决方案资源管理器 窗口中 右击 MyServiceSetup 项目 在打开的右键菜单中单击 生成 命令 以生成该项目 至此 Windows服务的安装程序就完成了 利用安装项目安装Windows服务 右击 解决方案资源管理器 窗口中的 MyServiceSetup 安装项目 在打开的右键菜单中单击 安装 打开安装向导窗口 单击 下一步 选择安装文件夹 单击 下一步 确认安装 单击 下一步 开始安装过程 安装完成后 单击 关闭 按钮 此时 打开 服务器资源管理器 窗口 展开服务器节点 在服务中即可看到FirstWinService服务 也可以右击 我的电脑 在打开的右键菜单中单击 管理 打开 计算机管理 窗口 在左侧列表框中单击 服务和应用程序 下的 服务 也可以看到FirstWinService服务 卸载服务 一种是打开 控制面板 双击 添加或删除程序 找到该安装文件 单击 删除 按钮 另一种方法是找到安装项目的msi文件 该文件位于安装项目的Release文件夹下 20 4启动和停止服务 服务安装以后 可以手动的启动或者停止 在 计算机管理 窗口 右击该服务 在打开的右键菜单中单击 启动 或者 停止 即可 由于FirstWinService在启动和停止的时候均会写入日志 因此可以查看服务的事件日志输出 在 计算机管理 窗口中 在左侧列表框中单击 事件查看器 选项 即可看到MyNewLog 这是我们自定义的日志源 打开MyNewLog 即可看到写入的日志信息 右击该日志信息 在打开的右键菜单中单击 属性 可以看到该日志信息的描述 20 5Windows服务应用实例 数据库备份 应用背景 在服务器上常会有一些重要的数据库 为了防止数据丢失或者因为程序崩溃或其他异常情况导致数据损坏 可以定期备份数据库中的数据 本节就来实现这个定期备份数据库的Windows服务 添加计时器 首先新建一个Windows服务应用工程 并将计时器添加到工程中来 在服务的构造函数中初始化计时器 代码演示 下面代码是服务的构造函数 完成计时器的初始化 1PublicSubNew 2MyBase New 3 此调用是Windows窗体设计器所必需的4InitializeComponent 5 在InitializeComponent 调用之后添加任何初始化6 每一分钟就执行备份7Timer1 Interval 600008Timer1 Enabled False9EndSub 重写OnStart方法和OnStop方法 在服务启动和停止时分别启动计时器和停止计时器 代码演示 下面代码重写OnStart方法和OnStop方法 实现计时器的启动和停止 1ProtectedOverridesSubOnStart ByValargs AsString 2 请在此处添加代码以启动您的服务 此方法应完成设置工作 3 以使您的服务开始工作 4Timer1 Start 5EndSub67ProtectedOverridesSubOnStop 8 在此处添加代码以执行任何必要的拆解操作 从而停止您的服务 9Timer1 Stop 10EndSub 该服务的重点代码在于计时器每隔一定的时间间隔 本例中是一分钟 就执行数据库备份的工作 下面代码是计时器的Elapsed事件过程 实现数据库的备份 1PrivateSubTimer1 Elapsed ByValsenderAsSystem Object ByValeAsSystem Timers ElapsedEventArgs HandlesTimer1 Elapsed2DimconnStringAsString DataSource InitialCatalog VBNET2008 IntegratedSecurity True 3DimconnAsSqlConnection NewSqlConnection 4conn ConnectionString connString5 执行备份的语句6DimsqlAsString BACKUPDATABASExiaoquTODISK C VBNET2008 bak WITHFORMAT 7DimcommandAsSqlCommand NewSqlCommand sql 8command Connection conn9Try10 开始执行11conn Open 12command ExecuteNonQuery 13CatchexAsSqlException14Finally15conn Close 16EndTry17EndSub
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!