明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

VB中重要的DoEvents函數(shù)

[摘要]有很多程序員都不了解VB中的DoEvents函數(shù)。DoEvents函數(shù)可以臨時(shí)返回控制器給操作系統(tǒng),并允許它完成其他可能發(fā)生的事件。 當(dāng)一個(gè)程序的代碼需要花很長的時(shí)間去執(zhí)行,比如在一個(gè)復(fù)雜的數(shù)學(xué)計(jì)算的時(shí)候,你需要運(yùn)用DoEvents函數(shù)。在你代碼適當(dāng)?shù)奈恢谜{(diào)用DoEvents函數(shù),能夠改變程序響應(yīng)...
有很多程序員都不了解VB中的DoEvents函數(shù)。DoEvents函數(shù)可以臨時(shí)返回控制器給操作系統(tǒng),并允許它完成其他可能發(fā)生的事件。


當(dāng)一個(gè)程序的代碼需要花很長的時(shí)間去執(zhí)行,比如在一個(gè)復(fù)雜的數(shù)學(xué)計(jì)算的時(shí)候,你需要運(yùn)用DoEvents函數(shù)。在你代碼適當(dāng)?shù)奈恢谜{(diào)用DoEvents函數(shù),能夠改變程序響應(yīng)的時(shí)間。

這里有一個(gè)例子:在VB里創(chuàng)建一個(gè)標(biāo)準(zhǔn)的EXE文件并放置一個(gè)CommandButton和一個(gè)TextBox,然后,將下面的代碼放入CommandButton的單擊事件處理程序中:

Private Sub Command1_Click()
Dim i As Long, j As Long
For i = 1 To 100
Text1.Text = i
For j = 1 To 100000
NextNext

Text1.Text = “Done”
End Sub

你可以發(fā)現(xiàn)這個(gè)程序中有嵌套式循環(huán),循環(huán)將持續(xù)幾秒鐘。每次,外部循環(huán)反復(fù)執(zhí)行I

的值顯示在text box中。當(dāng)循環(huán)結(jié)束時(shí),Done也顯示出來了。

在你運(yùn)行這個(gè)程序的時(shí)候究竟發(fā)生了什么呢?然而,text box不會(huì)改變直到Done顯示

出來。問題在于在執(zhí)行循環(huán)的時(shí)候系統(tǒng)非常繁忙,而循環(huán)語句中的I要顯示在text box里面,這延遲windows隊(duì)列。當(dāng)循環(huán)完成以后,所有的請(qǐng)求都被執(zhí)行。

現(xiàn)在在Text1.Text = i調(diào)用DoEvents函數(shù)。當(dāng)你運(yùn)行程序的時(shí)候,你會(huì)發(fā)現(xiàn)text box記下了I的值。調(diào)用DoEvents函數(shù)可以釋放系統(tǒng)內(nèi)存來完成其他請(qǐng)求,然后將控制器返回給VB程序。

雖然調(diào)用DoEvents函數(shù)是以速度為代價(jià),但是可以讓程序有時(shí)間執(zhí)行其他的事件,這個(gè)代價(jià)是值得的。