概括VB.NET OnStart处理方法

开发 后端
这里介绍VB.NET OnStart处理方法,Windows服务,是一些长久运行的程序,而并不需要依靠登录用户或客户程序来保持它的运行。

VB.NET还是比较常用的,于是我研究了一下VB.NET OnStart处理方法,在这里拿出来和大家分享一下,希望对大家有用

有时候,处于业务的需要,我们要不断的监视文件的变化,比如文件的创建、删除、重命名等;而且某些人要确保重要文件的只读,并且要及时的报告文件版本的变更情况。或者,你想监视你的文件夹被别人更改、肆意删除而又不知道是谁干的,在什么时候干的?于是你就考虑要写一个监视程序,“偷偷的”记录文件夹被操作的情况。

有些人采取常规的方式,即写一个桌面应用程序,其界面可能是隐藏的。采用每隔一个事件片段读取文件信息,然后写到一个log文件中。然后设置系统启动的事件自动加载程序,(好像很多人是这样窃取QQ密码的:)。其缺点:
1、不是连续的获取信息,因为他们采用了 Timer的tick事件;
2、在NT系统中,可能要一定的权限才可以运行,比如要管理员身份等。还有系统中会有进程显示,显然很容易shut down.

我们建议的方案:采用.NET的Windows Service。首先可以克服以上缺点,而且较VB6的编程而言,.NET中写windows service一如反掌。

思路:在.NET创建的服务中调用System.IO.FileSystemWatcher对象,每次被监视的文件或者文件夹变化的时候,调用IO系统的FileStream和StreamWriter把变更信息写到log文件中。

Windows服务,是一些长久运行的程序,而并不需要依靠登录用户或客户程序来保持它的运行。它们没有自己的用户界面,可以在它们自己独有的安全级别和会话上下文中运行。我们比较熟悉的Windows服务范例包含了从打印池到SQL服务器以及它的分布式事务协作(DTC)。服务只可以运行在NT、2000以及后继产品比如XP下运行,它们通过Microsoft Management Console (MMC)提供了一个专门的管理界面(开始->运行->Services.msc)。

在.NET中创建项目的时候,有一个Windows服务的模板,选择新建。这个操作自动为我建立了一个新的类,它是继承了.NET内建了System.ServiceProcess.ServiceBase类。同时它提供给我一个可视化的设计器,一个图形化的快速开发工具,它特别的为那些本身没有用户界面的工程。我可以点击这个设计器,设定我的服务的名字(我命名为"File Watching")。

当启动某项服务时,系统将定位相应的可执行文件,并运行该服务的 VB.NET OnStart处理方法(它包含在可执行文件内)。但是,运行服务与运行可执行文件并不相同。可执行文件仅加载服务。服务则通过“服务控制管理器”访问(例如启动和停止)。

当***在服务上调用“开始”时,可执行文件将调用 ServiceBase 派生类的构造函数。在构造函数执行之后将立即调用 VB.NET OnStart处理方法。在服务***加载之后,构造函数不会再次执行,因此有必要将构造函数执行的处理和 OnStart执行方法的处理分开。可以由 OnStop 释放的任何资源都应在 OnStart 中创建。如果服务在 OnStop 释放资源后再次启动,那么,在构造函数中创建资源会妨碍这些资源的正确创建。

“服务控制管理器”(SCM) 提供与服务交互的方式,可以使用 SCM 将“开始”(Start)、“停止”(Stop)、“暂停”(Pause)、“继续”(Continue) 或自定义命令传递到服务中。SCM 使用 CanStop 和 CanPauseAndContinue 的值,决定服务是否接受“停止”、“暂停”或“继续”命令。仅当服务类中相应的属性 CanStop 或 CanPauseAndContinue 为 true 时,才会在 SCM 的上下文菜单中启用“停止”、“暂停”或“继续”。如果已启用,则相应的命令将传递到服务,并且调用 OnStop、OnPause 或 OnContinue。如果 CanStop、CanShutdown 或 CanPauseAndContinue 为 false,则即使已实现相应的命令处理方法(如 OnStop),也不会予以处理。

【编辑推荐】

  1. 全面描述VB.NET字节数组
  2. 详解VB6.0和VB.NET窗体的区别
  3. VB.NET编码算法学习笔记
  4. 简单概括VB.NET数据绑定
  5. 深入解析VB.NET创建表示层
责任编辑:佚名 来源: 博客园
相关推荐

2009-10-27 11:32:42

VB.NET Disp

2009-11-03 10:51:33

VB.NET共享

2009-11-03 10:00:20

VB.NET New方

2009-10-14 10:19:57

VB.NET Doma

2009-10-15 17:50:48

VB.NET Spli

2009-10-13 14:50:59

VB.NET Envi

2009-10-26 15:57:07

VB.NET使用Ora

2009-10-14 14:04:29

VB.NET创建Web

2009-10-21 10:05:30

VB.NET运行环境

2009-10-23 14:06:07

VB.NET类对象

2009-10-14 13:15:09

VB.NET数据绑定

2009-10-28 10:51:32

VB.NET默认属性

2009-10-14 15:34:29

VB.NET窗体编程模

2009-11-02 13:07:26

VB.NET OPEN

2009-10-27 10:30:18

VB.NET实现动态菜

2009-11-02 17:49:05

VB.NET抽象类

2009-10-29 16:23:42

VB.NET实现IEn

2009-10-28 14:44:43

VB.NET Name

2009-11-02 09:21:04

VB.NET文件系统

2009-10-29 10:04:57

VB.NET Read
点赞
收藏

51CTO技术栈公众号