高手論聲明VB.NET事件
VB.NET經過長時間的發展,很多用戶都很了解VB.NET事件了,這里我發表一下個人理解,和大家討論討論。調用了線程的start方法,并不能確保其中的方法馬上執行完,而要得到數據訪問的結果又必須等其中的方法執行完畢。
#T#如果在運行線程后采用循環查詢的方法顯然影響了交互性,事件是從線程方法返回數據的好方法。只要在線程方法所在的類中定義一個事件,在線程方法中發出事件,而在窗體類中生成代理。線程是操作系統分配處理器時間的基本單元,線程可以在單個執行線程執行的同時運行多個活動,支持搶先多任務處理的操作系統可以創建多個線程并通過時間片輪轉的方式使它們同時運行。在需要良好用戶交互的應用以及與網絡和數據庫進行通訊的應用中,使用多線程能提供良好的交互體驗,能對用戶的要求做出快速的反應。
首先在dealDataBase類聲明后加進VB.NET事件:
- Public Class dealDataBase
- Public Event GetDataComplete(ByVal e As DtatTable)
- …
- End Class
在類dealDataBase的GetDataFromDataBase()方法中加入發出事件的代碼,放在m_sqlDataAdapter.Fill(m_table)后:
- Public sub GetDataFromDataBase()
- …
- m_sqlDataAdapter.Fill(m_table)
- RasiseEvent GetDataComplete(m_table)
- …
- End Sub
下面在窗體類中生成代理
- Private Sub dealData (ByVal e As DataTable)
- '處理數據表
- End Sub
在創建線程并運行線程的代碼中進行事件連接,事件連接代碼放在運行線程前, dealDataBase類實例化后:
- AddHandler myDB. GetDataComplete,AddressOf dealData
這樣,當線程方法執行完畢就會發出事件,而dealData方法會響應VB.NET事件并做出處理。