VB中的迴圈太大了,老是未響應

2022-03-14 20:29:40 字數 3771 閱讀 1175

1樓:匿名使用者

form2.show 放到排序前邊行不?

排序過程中再加入

doevents

2樓:匿名使用者

doevents 函式

轉讓控制權,以便讓作業系統處理其它的事件。

語法doevents( )

說明doevents 函式會返回一個 integer,以代表 visual basic 獨立版本中開啟的窗體數目,例如,visual basic,專業版,在其它的應用程式中,doevents 返回 0。

doevents 會將控制權傳給作業系統。當作業系統處理完佇列中的事件,並且在 sendkeys 佇列中的所有鍵也都已送出之後,返回控制權。

doevents 對於簡化諸如允許使用者取消一個已啟動的過程 — 例如搜尋一個檔案 — 特別有用。對於長時間過程,放棄控制權最好使用定時器或通過委派任務給 activex exe 部件來完成。以後,任務還是完全獨立於應用程式,多工及時間片由作業系統來處理。

小心 確保以 doevents 放棄控制權的過程,在第一次 doevents 返回之前,不能再次被其他部分的**呼叫;否則會產生不可預料的結果。此外,如果其它的應用程式可能會和本過程以不可預知的方式進行互動操作,那麼也不要使用 doevents,因為此時不能放棄控制權。

doevents 函式示例

下列示例在迴圈中使用 doevents 函式,每當迴圈完成 1000 次時,將執行讓給作業系統。doevents 返回僅當主應用程式是 visual basic時,開啟的窗體個數。

' 建立一個變數來儲存載入的 visual basic 可見窗體的個數。

dim i, openforms

for i = 1 to 150000 ' 迴圈開始。

if i mod 1000 = 0 then ' 如果迴圈一已完成了 1000 次。

openforms = doevents ' 將執行讓給作業系統。

end if

next i ' 將迴圈計數器加一。

3樓:

迴圈中加入doevents就可以了

實在不成就用timer控制元件代替迴圈

4樓:

中間可以等待一下,處理不過來

vb迴圈語句導致類似宕機的狀態,用do loop寫的,為什麼?

5樓:

在迴圈體內加入doevents,釋放系統控制權

6樓:持不那

vb中 do...loop 迴圈本身沒有結束迴圈條件,無論迴圈中**執行何種運算,只要沒有語法錯誤,它就一直執行,如果它的執行速度過高,則會一直佔用cpu,導致宕機等系統問題;

對 do loop的應用,需要在迴圈內部新增結束迴圈的條件語句,除此之外,還需要為迴圈設定一定間隔時間,比如使用延時類「 delay 500 」之類語句;保證cpu有足夠響應時間,如果使用者需要高速執行某些**,新增** delay 1(也就是延時1毫秒(1毫秒=1/1000秒)),比未新增的效果要更好。

7樓:泠月冰辰

死迴圈了唄.

要加上迴圈退出條件以及退出迴圈的語句.

8樓:土地上的石頭

死迴圈,

dim i as ingter

for i 1 to 2

《迴圈體》

next

我一般就用它

do ___ loop的我就不用

vb中,如何用定時器控制一個迴圈結構呢?也就是說當迴圈超過了設定的時間還沒完成時,定時器就把它給結...

9樓:風的誓言

很簡單啊.

迴圈每進行一次前,檢測某變數是否為真,如果為真就迴圈,如果不為真就退出迴圈.

計時器就檢測是否時間到了,如果到了,就把那個變數為假,否則為真.

以上為思路.

option explicit

dim swtich as boolean, index as byte'定義一個開關變數,及計時變數

private sub command1_click()

do while swtich = true'這裡檢測開關,開關由定時器控制

'這裡寫你要迴圈的**

end sub

private sub form_load()

timer1.interval = 1000'計時器以秒為單位進行檢測;

end sub

private sub timer1_timer()

if index = 10 then'這裡是10秒為計時,也就是說,計時10s後,開關關掉.

timer1.enabled = false

swtich = false

else

index = index + 1

end if

end sub

10樓:匿名使用者

用一個標記變數,定時器如果時間到了就把那個變數的值改為某個值,比如1(數型),或者true(布林型),事先要給這個變數賦值為非1,或者false。

迴圈中有判斷這個標記變數的值,如果是1或者true就退出迴圈。

用vb6做了個小程式,但是為什麼執行的時候是未響應,滑鼠落到視窗上就是個圈圈(win7)

11樓:

仔細查查是不是有死迴圈,這樣說明你寫的程式幹別的傻事呢。

12樓:匿名使用者

**貼出來啊,光貼個控制元件的圖能看出什麼問題

在vb中如何結束本次迴圈

13樓:森心彎月

continue

14樓:

exit for

exit do

急了能用

exit sub

15樓:匿名使用者

用exit 加上你的迴圈型別,如for迴圈就為exit for

16樓:匿名使用者

如果是for迴圈就用exit for;

do迴圈就用exit do.

比如:for迴圈:

for i=1 to 9

print i;

if i=7 then exit for'當i=7的時候結束迴圈next i

do 迴圈:

i = 1

do until i = 9

print i;

if i = 7 then exit do'當i=7的時候結束迴圈i = i + 1

loop

17樓:一路光明

你看你用什麼迴圈了。

for迴圈:

for i = 1 to 5

…………

…………

next i

do迴圈:

do …………

…………

loop until或while (迴圈條件)反過來:

do until或while (迴圈條件)…………

…………

loop

當迴圈:

while 條件

執行的語句

wend

不同的迴圈結束的的語句不一樣。

你看看就知道了。

如果是退出迴圈,得用出口語句exit

如:exit for 、exit do

VB中正確的迴圈語句是,vb中的迴圈語句

for x 迴圈變數 1 初始值 to 10 終止值 step 2 步進 next 以上為完整的迴圈結構 1.沒有終止值 所以錯 3.初始值比終止值小 所以步進應該為整數 而它是負數 所以也錯4.初始值大於終止值 預設步進為1 無法迴圈 所以也錯 for語句 for counter start to...

VB中3次迴圈卻給了4次的結果

因為你步長是2,當for執行到第4次時k 8,這時條件不滿足跳出迴圈,即迴圈體執行了3次,得出 w 3 3,k 2 4。輸出4次的結果是因為你在跳出迴圈後又 form1.print w w,k k,vb沒有做錯 這個當然的了,w 6沒有什麼的吧,k 8是應為加為6時你的條件仍是滿足的,當再加到8時才...

VB的for迴圈巢狀請幫解釋,一個VB的for迴圈巢狀請幫解釋?

這是一個for的巢狀迴圈。這裡求t的值 t t 1 可以看出其實迴圈了多少次t的值就是多少 先從第一句開始執行 1 for i 1to3 這句表示1句要迴圈3次 當1句執行第一次時候 i 1 那麼第2句就可以看成是 for j 1 to 1 step 1,那麼第2句就從 j 1開始執行 第3句就可以...