自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

經(jīng)典講解VB.NET線程方法之訪問數(shù)據(jù)庫

開發(fā) 后端
線程是操作系統(tǒng)分配處理器時(shí)間的基本單元,線程可以在單個(gè)執(zhí)行線程執(zhí)行的同時(shí)運(yùn)行多個(gè)活動(dòng),文章主要就VB.NET線程方法訪問數(shù)據(jù)庫進(jìn)行詳細(xì)介紹。

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

1 創(chuàng)建數(shù)據(jù)庫訪問線程

在數(shù)據(jù)庫應(yīng)用中,特別是網(wǎng)絡(luò)數(shù)據(jù)庫訪問,因?yàn)榭赡芤L問的數(shù)據(jù)量較大,因此需要比較長的時(shí)間來得到結(jié)果,而一個(gè)良好的程序應(yīng)具有良好的交互性,在訪問數(shù)據(jù)庫時(shí)應(yīng)允許你的應(yīng)用程序?qū)τ脩舻幕顒?dòng)盡快做出響應(yīng),以提供豐富的用戶體驗(yàn)。利用多線程機(jī)制可以讓需要大量時(shí)間的操作在后臺運(yùn)行以快速響應(yīng)用戶的活動(dòng)。下面的代碼訪問數(shù)據(jù)庫并返回?cái)?shù)據(jù)表:

  1. Private sub GetDataFromDataBase()  
  2. …  
  3. m_table.Clear()  
  4. m_sqlDataAdapter.Fill(m_table)  
  5. …  
  6. End Sub  

創(chuàng)建Thread對象的新實(shí)例,需創(chuàng)建新的線程代理.ThreadStart線程代理可以指定生成線程時(shí)要執(zhí)行的方法名,但線程代理并不實(shí)際運(yùn)行線程.創(chuàng)建ThreadStart對象時(shí),需指定線程開始執(zhí)行時(shí)要運(yùn)行的方法的指針,該方法不能接受任何參數(shù)。下面我們將上面的代碼分配給一個(gè)線程處理,并且啟動(dòng)它:

  1. Dim myThreadStart as ThreadStart =New ThreadStart(AddressOf GetDataFromDataBase)  
  2. Dim myThread as Thread=New Thread(myThreadStart)  
  3. myThread.Start()  

這樣當(dāng)進(jìn)行數(shù)據(jù)庫的訪問時(shí),用戶可以繼續(xù)進(jìn)行處理。

2.VB.NET線程方法使用事件

調(diào)用了線程的start方法,并不能確保其中的方法馬上執(zhí)行完,而要得到數(shù)據(jù)訪問的結(jié)果又必須等其中的方法執(zhí)行完畢。如果在運(yùn)行線程后采用循環(huán)查詢的方法顯然影響了交互性,事件是從線程方法返回?cái)?shù)據(jù)的好方法。只要在VB.NET線程方法所在的類中定義一個(gè)事件,在VB.NET線程方法中發(fā)出事件,而在窗體類中生成代理。
首先在dealDataBase類聲明后加進(jìn)事件:

  1. Public Class dealDataBase  
  2. Public Event GetDataComplete(ByVal e As DtatTable)  
  3. …  
  4. End Class  

在類dealDataBase的GetDataFromDataBase()方法中加入發(fā)出事件的代碼,放在m_sqlDataAdapter.Fill(m_table)后:

  1. Public sub GetDataFromDataBase()  
  2. …  
  3. m_sqlDataAdapter.Fill(m_table)  
  4. RasiseEvent GetDataComplete(m_table)  
  5. …  
  6. End Sub   

下面在窗體類中生成代理

  1. Private Sub dealData (ByVal e As DataTable)  
  2. '處理數(shù)據(jù)表  
  3. End Sub  

在創(chuàng)建線程并運(yùn)行線程的代碼中進(jìn)行事件連接,事件連接代碼放在運(yùn)行線程前, dealDataBase類實(shí)例化后:

  1. AddHandler myDB. GetDataComplete,AddressOf dealData  

這樣,當(dāng)線程方法執(zhí)行完畢就會發(fā)出事件,而dealData方法會響應(yīng)事件并做出處理。

【編輯推薦】

  1. VB.NET水晶報(bào)表控件經(jīng)驗(yàn)總結(jié)
  2. 簡單講述VB.NET Excel
  3. 學(xué)習(xí)VB.NET Data Report控件
  4. 詳談VB自定義類型參數(shù)的傳遞
  5. VB.NET字符串?dāng)?shù)組全面分析
責(zé)任編輯:田樹 來源: csdn
相關(guān)推薦

2009-10-29 17:45:24

VB.NET線程

2009-11-11 11:33:08

VB.NET線程訪問數(shù)

2010-01-18 17:45:33

VB.NET線程訪問數(shù)

2009-10-16 09:40:54

VB.NET訪問注冊表

2009-10-28 16:47:26

VB.NET訪問數(shù)據(jù)庫

2010-01-12 10:40:58

VB.NET數(shù)據(jù)庫壓縮

2009-10-23 15:35:42

VB.NET實(shí)用教程

2009-11-11 11:43:26

VB.NET數(shù)據(jù)庫訪問

2010-01-18 19:21:51

VB.NET存取數(shù)據(jù)庫

2009-10-12 16:08:14

VB.NET訪問注冊表

2010-01-12 16:30:21

VB.NET數(shù)據(jù)轉(zhuǎn)換

2010-01-14 15:44:17

VB.NET數(shù)據(jù)綁定

2010-01-11 16:04:10

VB.NET使用wit

2009-10-20 10:16:24

VB.NET COMB

2009-10-28 17:08:57

VB.NET數(shù)據(jù)庫開發(fā)

2009-10-28 17:00:30

VB.NET數(shù)據(jù)庫

2009-10-27 09:30:53

VB.NET DLL搜

2010-01-18 18:06:07

VB.NET多線程

2009-10-26 14:36:33

VB.NET數(shù)據(jù)自增

2009-10-13 17:31:50

VB.NET Acce
點(diǎn)贊
收藏

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