新聞中心
在向大家詳細介紹VB.NET線程之前,首先讓大家了解下線程,然后全面介紹VB.NET線程方法。線程是操作系統(tǒng)分配處理器時間的基本單元,線程可以在單個執(zhí)行線程執(zhí)行的同時運行多個活動,支持搶先多任務處理的操作系統(tǒng)可以創(chuàng)建多個線程并通過時間片輪轉的方式使它們同時運行。在需要良好用戶交互的應用以及與網(wǎng)絡和數(shù)據(jù)庫進行通訊的應用中,使用多線程能提供良好的交互體驗,能對用戶的要求做出快速的反應。本文主要介紹.NET中的線程在數(shù)據(jù)庫編程中的具體應用(用VB.NET實現(xiàn))。

創(chuàng)新互聯(lián)建站自成立以來,一直致力于為企業(yè)提供從網(wǎng)站策劃、網(wǎng)站設計、網(wǎng)站設計、成都網(wǎng)站制作、電子商務、網(wǎng)站推廣、網(wǎng)站優(yōu)化到為企業(yè)提供個性化軟件開發(fā)等基于互聯(lián)網(wǎng)的全面整合營銷服務。公司擁有豐富的網(wǎng)站建設和互聯(lián)網(wǎng)應用系統(tǒng)開發(fā)管理經(jīng)驗、成熟的應用系統(tǒng)解決方案、優(yōu)秀的網(wǎng)站開發(fā)工程師團隊及專業(yè)的網(wǎng)站設計師團隊。
1 創(chuàng)建數(shù)據(jù)庫訪問線程
在數(shù)據(jù)庫應用中,特別是網(wǎng)絡數(shù)據(jù)庫訪問,因為可能要訪問的數(shù)據(jù)量較大,因此需要比較長的時間來得到結果,而一個良好的程序應具有良好的交互性,在訪問數(shù)據(jù)庫時應允許你的應用程序對用戶的活動盡快做出響應,以提供豐富的用戶體驗。利用多線程機制可以讓需要大量時間的操作在后臺運行以快速響應用戶的活動。下面的代碼訪問數(shù)據(jù)庫并返回數(shù)據(jù)表:
- Private sub GetDataFromDataBase()
- …
- m_table.Clear()
- m_sqlDataAdapter.Fill(m_table)
- …
- End Sub
創(chuàng)建Thread對象的新實例,需創(chuàng)建新的線程代理.ThreadStart線程代理可以指定生成線程時要執(zhí)行的方法名,但線程代理并不實際運行線程.創(chuàng)建ThreadStart對象時,需指定線程開始執(zhí)行時要運行的方法的指針,該方法不能接受任何參數(shù)。下面我們將上面的代碼分配給一個線程處理,并且啟動它:
- Dim myThreadStart as ThreadStart =New ThreadStart(AddressOf GetDataFromDataBase)
- Dim myThread as Thread=New Thread(myThreadStart)
- myThread.Start()
這樣當進行數(shù)據(jù)庫的訪問時,用戶可以繼續(xù)進行處理。
2.VB.NET線程方法使用事件
調用了線程的start方法,并不能確保其中的方法馬上執(zhí)行完,而要得到數(shù)據(jù)訪問的結果又必須等其中的方法執(zhí)行完畢。如果在運行線程后采用循環(huán)查詢的方法顯然影響了交互性,事件是從線程方法返回數(shù)據(jù)的好方法。只要在VB.NET線程方法所在的類中定義一個事件,在VB.NET線程方法中發(fā)出事件,而在窗體類中生成代理。
首先在dealDataBase類聲明后加進事件:
- Public Class dealDataBase
- Public Event GetDataComplete(ByVal e As DtatTable)
- …
- End Class
在類dealDataBase的GetDataFromDataBase()方法中加入發(fā)出事件的代碼,放在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)
- '處理數(shù)據(jù)表
- End Sub
在創(chuàng)建線程并運行線程的代碼中進行事件連接,事件連接代碼放在運行線程前, dealDataBase類實例化后:
- AddHandler myDB. GetDataComplete,AddressOf dealData
這樣,當線程方法執(zhí)行完畢就會發(fā)出事件,而dealData方法會響應事件并做出處理。
標題名稱:經(jīng)典講解VB.NET線程方法之訪問數(shù)據(jù)庫
本文鏈接:http://m.fisionsoft.com.cn/article/djieppc.html


咨詢
建站咨詢
