与Visual Basic .NET一起使用.NET Framework
来源:互联网
作者:西部数码
时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
文件系统监控
我曾经遇到过一些应用程序,需要等待和处理某个特定目录中的文件-例如,将数据从文件导入到数据库中去的应用程序。数据文件可以从某个大型机上下载,或者被转移到某个输入目录中,该应用程序将它们导入到数据库中。你不用经常地轮询该目录检查是否有新文件,可以等待生成新文件的通知。你可以在Visual Basic 6.0中使用Win32 API来做到这一点,而在Visual Basic .NET中你可以使用.NET Framework类来做这项工作。但是在.NET中实施文件监控与在.NET中完成其他工作的方法更加一致,因此学习曲线是最小的。
你可以使用System.IO.FileSystemWatcher .NET类对文件系统进行监视。它提供了一些属性,允许你设置监控的路径,指定是对文件还是子目录层次的变化感兴趣。System.IO.FileSystemWatcher还允许你指定需要监控的文件名和文件类型(例如,*.xml是指监控所有XML文件的变化)。最后,你可以指定感兴趣的变化类型-例如,只对新建文件,文件属性的变化或文件大小的变化(请参阅清单2)感兴趣。
在你设置了监控内容后,你需要钩住用于感兴趣的各种事件的事件处理程序。FileSystemWatcher事件有Changed、Created、Deleted、Error和Renamed。要处理某个事件,首先你需要编写一个与FileSystemEventHandler代理相同声明的事件处理程序,然后将这个处理程序添加到FileSystemWatcher类中。这个基于代理的体系结构允许你为同一个事件添加多个处理程序,或者对于多个事件使用同一个处理程序-而你不能使用Visual Basic 6.0做到这一点。
'System.IO contains the
'file monitoring classes and types
Imports System.IO
Module Module1
Sub Main()
'FileSystemWatcher does the real work
Dim fw As New FileSystemWatcher()
'WaitForChangedResult is what you
'get back when a change occurs
Dim result As WaitForChangedResult
'set the path to monitor
fw.Path = "C:\WINNT\"
'tell it whether to watch files or directories
fw.Target = WatcherTarget.File
'tell it whether to include subdirs
fw.IncludeSubdirectories = False
'hook up handlers
AddHandler fw.Created,New FileSystemEventHandler(AddressOf OnFileNotify)
'enable the watcher
fw.Enabled = True
Do
Console.WriteLine("Beginning to monitor")
'this is where we actually wait
'waiting blocks execution for the specified timeout
result = fw.WaitForChanged(WatcherChangeTypes.All, 60000)
Console.WriteLine("Hit Enter to continue q to quit")
Loop While (Console.ReadLine <> "q")
End Sub
'This is the delegate that gets
'called when a file is created
Public Sub OnFileNotify(ByVal source As Object, ByVal e As FileSystemEventArgs)
Console.WriteLine( "Notification received for file {0}, change type is {1}", _
e.FullPath, e.ChangeType)
End Sub
End Module
清单2. 使用FileSystemWatcher监控某个文件夹是否有新文件。
你可以创建一个FileSystemWatcher,然后设置它的属性。你可以使用AddHandler将FileSystemEventHandler代理与各种FileSystemWatcher事件关联起来,如Created。然后你就可以启用FileSystemWatcher,然后调用WaitForChanged。该调用将在变化发生或达到指定的超时时返回。
创建Windows服务
当你要创建一个Windows服务时,你必须使用Visual C 或在Visual Basic中使用srvany.exe或第三方工具来创建该服务。任何一种方法,你都没有在Visual Basic中编写自己的服务,你只是正在Visual Basic运行时的外部添加更多从属组件。
如果你使用C 或C语言,在不使用活动模版库(Active Template Library)的情况下从头编写一个Windows服务,你将不得不编写一小段代码来协调你的服务与服务控制器(Service Control Manager,SCM)之间的往来通信,SCM用来处理服务的启动、暂停、继续和停止。.NET Framework通过提供System.ServiceProcess.ServiceBase类,使得实现一个服务变得很容易。要编写一个服务,你可以从这个类继承,重载它的某些方法,设置它的属性,然后就大功告成了!
你可能要重载的一些方法包括:OnStart、OnStop、OnPause和OnContinue。通常你需要载启动工作线程(worker thread)的位置重载OnStart,在需要取消这个工作线程的位置重载OnStop。在你创建了自己的服务后,你就可以使用SCM安装和注册这个服务。这是另一个领域,.NET Framework中的基类提供了大部分所需的工作。你可以创建一个继承自System.Configuration.Install.Installer的类,从System.ServiceProcess.ServiceInstaller中例示对象,然后设置它的属性,如服务启动模式和服务名称。这使得.NET安装实用工具installUtil.exe能够安装(和删除)你的服务,而你无需编写额外的代码。
当你开始使用Visual Studio .NET时,你将会发现Visual Studio .NET使得使用.NET Framework变得更容易。Visual Studio .NET允许你创建Windows服务(拥有安装程序(installer)),监控文件系统的变化,写入事件记录 - 所有都是使用设计器和组件而不是编写代码来完成。例如,要将一个安装程序添加到自己的服务项目中,你只需选中服务设计器避免,然后单击属性(Properties)窗口(见图3)底部的添加安装程序(Add Installer)。这将添加一个新模块ProjectInstaller.vb,该模块包括安装该服务所需的全部代码。你可以使用设计器(见图4),对安装选项,如启动模式进行自定义
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关文章
热点关注
- 在asp.net中为Web用户控件
- .NET3.5和VS2008中的ASP.N
- 对.NET Framework 反射的
- Asp.net Ajax 1.0 异步回
- ASP.NET2.0的控件状态和视
- 通过避免下列10个常见ASP.
- 中国地区三级联动下拉菜单
- 解析Asp.net中资源本地化
- 一个无刷新效果定时自动更
- 动态创建MSSQL数据库表存
- asp.net用url重写URLReWri
- 使用ASP.NET Atlas编写显
- 关于ASP.NET调用JavaScrip
- 使用ASP.Net Forms模式实
- asp.net ajax 使用updatep
- 优化ASP.NET应用程序性能
- ASP.NET中动态修改web.con
- ASP.NET中利用Crystal Rep
- asp.net如何生成图片验证
- 基于ASP.NET的Web动态控件
- 分享个极好的无刷新二级联
- asp.net 2.0 上传控件的使
- 创建ASP.NET监视服务器进
- Asp.net把UTF-8编码转换为
- 开发基于ASP.NET WebServi
- asp.net结合html,javascr
- asp.net 2.0下嵌套masterp
- 正则表达式提取数字
- 最新版FreeTextBox(版本3.
- 获取本机上配置好的Oracle
- ASP.Net全局变量的设置和
- VB几个有用的函数
- 用代码画折线图/柱形图/
- FCKeditor2.2 ASP.NET2.0
- 客户端回调实现gridView无
IDC资讯
虚拟主机
域名注册
托管租用
vps主机
智能建站
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD



