成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

講述關(guān)于VB.NET事件處理程序

開發(fā) 后端
文章主要對VB.NET事件處理程序的問題進行講解,對文件系統(tǒng)監(jiān)控 、創(chuàng)建Windows服務(wù)兩方面具體的分析和詳細的代碼解析。

VB.NET經(jīng)過長時間的發(fā)展,很多用戶都很了解它了,這里我就VB.NET事件處理程序發(fā)表一下個人理解,和大家討論討論。

文件系統(tǒng)監(jiān)控

我曾經(jīng)遇到過一些應(yīng)用程序,需要等待和處理某個特定目錄中的文件-例如,將數(shù)據(jù)從文件導(dǎo)入到數(shù)據(jù)庫中去的應(yīng)用程序。數(shù)據(jù)文件可以從某個大型機上下載,或者被轉(zhuǎn)移到某個輸入目錄中,該應(yīng)用程序?qū)⑺鼈儗?dǎo)入到數(shù)據(jù)庫中。你不用經(jīng)常地輪詢該目錄檢查是否有新文件,可以等待生成新文件的通知。你可以在Visual Basic 6.0中使用Win32 API來做到這一點,而在Visual Basic .NET中你可以使用.NET Framework類來做這項工作。但是在.NET中實施文件監(jiān)控與在.NET中完成其他工作的方法更加一致,因此學習曲線是最小的。

你可以使用System.IO.FileSystemWatcher .NET類對文件系統(tǒng)進行監(jiān)視。它提供了一些屬性,允許你設(shè)置監(jiān)控的路徑,指定是對文件還是子目錄層次的變化感興趣。System.IO.FileSystemWatcher還允許你指定需要監(jiān)控的文件名和文件類型(例如,*.xml是指監(jiān)控所有XML文件的變化)。最后,你可以指定感興趣的變化類型-例如,只對新建文件,文件屬性的變化或文件大小的變化感興趣。
在你設(shè)置了監(jiān)控內(nèi)容后,你需要鉤住用于感興趣的各種事件的VB.NET事件處理程序。FileSystemWatcher事件有Changed、Created、Deleted、Error和Renamed。要處理某個事件,首先你需要編寫一個與FileSystemEventHandler代理相同聲明的VB.NET事件處理程序,然后將這個處理程序添加到FileSystemWatcher類中。這個基于代理的體系結(jié)構(gòu)允許你為同一個事件添加多個處理程序,或者對于多個事件使用同一個處理程序-而你不能使用Visual Basic 6.0做到這一點。

  1. 注釋:System.IO contains the   
  2. 注釋:file monitoring classes and types  
  3. Imports System.IO  
  4. Module   
  5. Module1  
  6. Sub Main()   
  7. 注釋:FileSystemWatcher does the real work  
  8. Dim fw As New FileSystemWatcher()   
  9. 注釋:WaitForChangedResult is what you    
  10. 注釋:get back when a change occurs   
  11. Dim result As WaitForChangedResult   
  12. 注釋:set the path to monitor   
  13. fw.Path = "C:WINNT"   
  14. 注釋:tell it whether to watch files or directories  
  15. fw.Target = WatcherTarget.File   
  16. 注釋:tell it whether to include subdirs   
  17. fw.IncludeSubdirectories = False   
  18. 注釋:hook up handlers AddHandler fw.Created,New FileSystemEventHandler(AddressOf OnFileNotify)注釋:enable the watcher   
  19. fw.Enabled = True DoConsole.WriteLine("Beginning to monitor")   
  20. 注釋:this is where we actually wait  
  21. 注釋:waiting blocks execution for the specified timeoutresult = fw.WaitForChanged(WatcherChangeTypes.All, 60000)Console.WriteLine("Hit Enter to continue q to quit")   
  22. Loop While (Console.ReadLine <> "q")End Sub  
  23. 注釋:This is the delegate that gets   
  24. 注釋:called when a file is created   
  25. Public Sub OnFileNotify(ByVal source As Object, ByVal e As FileSystemEventArgs)Console.WriteLine( "Notification received for file , change type is ", _e.FullPath, e.ChangeType) End SubEnd Module  

你可以創(chuàng)建一個FileSystemWatcher,然后設(shè)置它的屬性。你可以使用AddHandler將FileSystemEventHandler代理與各種FileSystemWatcher事件關(guān)聯(lián)起來,如Created。然后你就可以啟用FileSystemWatcher,然后調(diào)用WaitForChanged。該調(diào)用將在變化發(fā)生或達到指定的超時時返回。

創(chuàng)建Windows服務(wù)

當你要創(chuàng)建一個Windows服務(wù)時,你必須使用Visual C++或在Visual Basic中使用srvany.exe或第三方工具來創(chuàng)建該服務(wù)。任何一種方法,你都沒有在Visual Basic中編寫自己的服務(wù),你只是正在Visual Basic運行時的外部添加更多從屬組件。 如果你使用C++或C語言,在不使用活動模版庫(Active Template Library)的情況下從頭編寫一個Windows服務(wù),你將不得不編寫一小段代碼來協(xié)調(diào)你的服務(wù)與服務(wù)控制器(Service Control Manager,SCM)之間的往來通信,SCM用來處理服務(wù)的啟動、暫停、繼續(xù)和停止。.NET Framework通過提供System.ServiceProcess.ServiceBase類,使得實現(xiàn)一個服務(wù)變得很容易。要編寫一個服務(wù),你可以從這個類繼承,重載它的某些方法,設(shè)置它的屬性,然后就大功告成了!

你可能要重載的一些方法包括:OnStart、OnStop、OnPause和OnContinue。通常你需要載啟動工作線程(worker thread)的位置重載OnStart,在需要取消這個工作線程的位置重載OnStop。在你創(chuàng)建了自己的服務(wù)后,你就可以使用SCM安裝和注冊這個服務(wù)。這是另一個領(lǐng)域,.NET Framework中的基類提供了大部分所需的工作。你可以創(chuàng)建一個繼承自System.Configuration.Install.Installer的類,從System.ServiceProcess.ServiceInstaller中例示對象,然后設(shè)置它的屬性,如服務(wù)啟動模式和服務(wù)名稱。這使得.NET安裝實用工具installUtil.exe能夠安裝(和刪除)你的服務(wù),而你無需編寫額外的代碼。

當你開始使用Visual Studio .NET時,你將會發(fā)現(xiàn)Visual Studio .NET使得使用.NET Framework變得更容易。Visual Studio .NET允許你創(chuàng)建Windows服務(wù)(擁有安裝程序(installer)),監(jiān)控文件系統(tǒng)的變化,寫入事件記錄 - 所有都是使用設(shè)計器和組件而不是編寫代碼來完成。例如,要將一個安裝程序添加到自己的服務(wù)項目中,你只需選中服務(wù)設(shè)計器避免,然后單擊屬性(Properties)窗口底部的添加安裝程序(Add Installer)。這將添加一個新模塊ProjectInstaller.vb,該模塊包括安裝該服務(wù)所需的全部代碼。你可以使用設(shè)計器,對安裝選項,如啟動模式進行自定義。

結(jié)論

.NET Framework使得你能夠利用Visual Basic .NET,很容易地開發(fā)健壯地VB.NET事件處理程序。它使得你可以將重點放在學習一種相容的程序設(shè)計模型上,并且使得你可以直接訪問底層的.NET平臺。利用Visual Basic .NET和.NET Framework,你可以使自己的應(yīng)用程序達到前所未有的水平。

【編輯推薦】

  1. 實例講述VB.NET使用Log4Net
  2. 三分鐘學會VB.NET轉(zhuǎn)換形態(tài)
  3. VB.NET獲取硬盤信息四大法寶
  4. 講述VB.NET調(diào)用Excel的好處
  5. 簡單例子概述VB.NET新窗體
責任編輯:田樹 來源: 博客
相關(guān)推薦

2009-10-21 10:45:50

VB.NET Quic

2009-10-14 17:08:44

VB.NET使用Fil

2009-10-16 13:26:53

VB.NET Exce

2009-11-03 17:31:01

VB.NET窗體

2009-10-15 11:11:08

VB.NET Text

2009-10-15 16:39:00

VB.NET讀取INI

2009-10-14 11:15:06

VB.NET Grou

2009-10-23 13:22:25

VB.NET實現(xiàn)拖動圖

2009-10-10 16:44:52

VB.NET開發(fā)控件

2009-10-13 17:03:55

VB.NET面向?qū)ο?/a>

2009-11-02 15:45:03

VB.NET IEnu

2009-10-12 16:39:59

OracleTransVB.NET使用

2009-10-19 08:55:22

VB.NET多重繼承

2009-10-16 09:35:24

VB.NET制作透明窗

2009-10-26 18:11:47

VB.NET調(diào)用Exc

2009-10-21 18:28:48

VB.NET表間拖放

2009-10-29 09:57:16

VB.NET實現(xiàn)數(shù)據(jù)綁

2009-10-22 09:20:46

VB.NET Proc

2009-10-26 19:22:29

VB.NET使用Log

2010-01-12 18:12:58

VB.NET事件
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 一区二区三区成人 | 国产视频h | 视频一二三区 | 日韩免费视频 | 91av视频在线免费观看 | 免费看爱爱视频 | 久久精品国产免费 | 欧美日韩成人在线 | 国产视频中文字幕在线观看 | 国产精品视频网 | 日韩av成人 | 欧美中文字幕一区 | 久久国产精彩视频 | 中文字幕韩在线第一页 | 国产日韩久久 | 免费观看视频www | 日韩免费视频 | 特黄小视频| www.国产精 | 亚洲男人天堂网 | 91在线一区 | 精品国产乱码久久久久久丨区2区 | 免费特级黄毛片 | 自拍偷拍一区二区三区 | 国产三级大片 | 天天玩天天操天天干 | 日韩国产在线 | 在线免费看91 | 亚洲第一福利视频 | 亚洲一区二区中文字幕 | 1204国产成人精品视频 | 亚洲啪啪 | 欧美激情在线播放 | 射久久 | 婷婷激情在线 | 欧美日韩一 | 日韩视频中文字幕 | 国产二区三区 | 成人午夜视频在线观看 | 精品国产成人 | 日日操操操 |