2011-04-16 47 views
2

我需要等待我的應用程序的一些事件,或做一些其他的東西睡眠不結冰GUI VB6

之前等待somew時間elaps我在VB6中嘗試這個僞代碼

starttime=gettickcount 
do 
endtime=gettickcount 
if endtime-starttime=>waittime then exit do 
doevents() 
loop 

但這似乎凍結鬼,我需要一種替代方法,將等待不FREEZ的GUI

編輯我忘了的DoEvents,敬請注意

回答

5

我建議使用計時器。只要達到它的滴答計數,計時器就會觸發事件。所以你可以告訴一些事情每3秒,3分鐘,1小時等。

計時器將在後臺運行,允許您的應用程序繼續正常運行,同時它倒計時。

+1

+1 - 這是正確的答案。你不應該呆在一個事件處理程序中,而不會超過必要的時間。如果你以後需要做些事情,那麼可以在適當的時候使用'Timer'來引發一個事件。永遠不要坐在一個緊密的循環中,因爲你阻止了GUI線程,所以你不會讓它重繪。 – 2011-04-17 02:39:56

+0

@Scott所以在一個對象event_handler中,我必須等待,並且你說我應該使用計時器?我該怎麼做 – Smith 2011-04-17 09:28:37

+0

下面是一個簡單的例子:http://www.vb6.us/tutorials/understanding-timer-control-vb6 – Mikecito 2011-04-17 10:38:11

1

中添加「調用DoEvents」您的vb6代碼...它允許應用程序重新繪製...

+2

只要將DOevents添加到代碼中,但卻沒有真正理解爲什麼需要它,它的含義就是稍後出現+非常+微妙問題的祕訣。 Doevents會產生效果,這意味着您的應用中的其他事件可能會觸發,這意味着您的應用中的其他例程(您可能從未想過要重新進入)可能會重新進入,這可能會導致各種問題。 – DarinH 2011-04-18 20:06:47