您好,登錄后才能下訂單哦!
這篇文章主要介紹VB.NET在數據庫編程中線程怎么用,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
線程是操作系統分配處理器時間的基本單元,線程可以在單個執行線程執行的同時運行多個活動,支持搶先多任務處理的操作系統可以創建多個線程并通過時間片輪轉的方式使它們同時運行。在需要良好用戶交互的應用以及與網絡和數據庫進行通訊的應用中,使用多線程能提供良好的交互體驗,能對用戶的要求做出快速的反應。本文主要介紹.NET中的線程在數據庫編程中的具體應用(用VB.NET實現)。
1 創建數據庫訪問線程
在數據庫應用中,特別是網絡數據庫訪問,因為可能要訪問的數據量較大,因此需要比較長的時間來得到結果,而一個良好的程序應具有良好的交互性,在訪問數據庫時應允許你的應用程序對用戶的活動盡快做出響應,以提供豐富的用戶體驗。利用多線程機制可以讓需要大量時間的操作在后臺運行以快速響應用戶的活動。下面的代碼訪問數據庫并返回數據表:
Private sub GetDataFromDataBase() … m_table.Clear() m_sqlDataAdapter.Fill(m_table) … End Sub
創建Thread對象的新實例,需創建新的線程代理.ThreadStart線程代理可以指定生成線程時要執行的方法名,但線程代理并不實際運行線程.創建ThreadStart對象時,需指定線程開始執行時要運行的方法的指針,該方法不能接受任何參數。下面我們將上面的代碼分配給一個線程處理,并且啟動它:
Dim myThreadStart as ThreadStart =New ThreadStart(AddressOf GetDataFromDataBase) Dim myThread as Thread=New Thread(myThreadStart) myThread.Start()
這樣當進行數據庫的訪問時,用戶可以繼續進行處理。
2.VB.NET線程方法使用事件
調用了線程的start方法,并不能確保其中的方法馬上執行完,而要得到數據訪問的結果又必須等其中的方法執行完畢。如果在運行線程后采用循環查詢的方法顯然影響了交互性,事件是從線程方法返回數據的好方法。只要在VB.NET線程方法所在的類中定義一個事件,在VB.NET線程方法中發出事件,而在窗體類中生成代理。
首先在dealDataBase類聲明后加進事件:
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在數據庫編程中線程怎么用”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。