標題:
DOEVENTS 指令很重要
[打印本頁]
作者:
sjgau
時間:
2013-10-25 13:09
標題:
DOEVENTS 指令很重要
http://www.programmer-club.com/showSameTitleN/vb/16866.html
我再 慢慢解說
作者:
sunnyso
時間:
2013-10-25 13:49
回復
1#
sjgau
期待ing 大大的解說
作者:
sjgau
時間:
2013-10-25 14:04
回復
2#
sunnyso
今天早上,終於鼓起勇氣 開始寫程式去抓取 盤中的 即時報價。
但是,只要 程式一起動,報價就 停止近來。
我大概 知道是 怎麼 一回事,趕快去網路上 找尋資料
只要在 迴圈�堶悼[上
DOEVENTS
就解決了
大概是 100秒鐘的 程式
可以跑 大約 三百萬個 迴圈
可以 正確抓取大約 200筆 報價資料
詳細,等我 下個禮拜整理一下 程式
再把 程式和 輸出 傳送上來
作者:
sjgau
時間:
2013-10-25 19:48
DoEvents 函數
請參閱 範例 特性
暫停執行,以便讓作業系統可以處理其它的事件。
語法
DoEvents( )
請注意
DoEvents 函數會傳回一個Integer,以代表 Visual Basic 的單一版本中所開啟的表單個數,例如, Visual Basic專業版。在其它的應用版本中,DoEvents 會傳回 0。
DoEvents 會將控制權傳給作業系統,然後當作業系統處理完佇列中的事件,並且在 SendKeys 佇列中的所有 Key 都已送出後,控制權會再傳回。
DoEvents 常用於可讓使用者取消一段處理序,例如搜尋檔案。對於一段需花費較長時間的動作而言,使用 Timer 來處理或交由一個 ActiveX EXE 元件會比較好。以後者而言,這個工作可不依靠應用程式而獨立進行,作業系統會以多工方式處理。
注意 請確定以 DoEvents 來放棄控制權的程序,在第一次 DoEvents 傳回之前,不能再度執行,否則會產生不可預期的結果。此外,如果其它的應用程式在您放出控制權時,可能會和您的程序產生互動,那麼也儘量不要使用 DoEvents。
作者:
sjgau
時間:
2013-10-25 19:52
如何 避免 DoEvents 尚未結束之前,
重複 執行 DoEvents???
作者:
sunnyso
時間:
2013-10-25 22:02
回復
5#
sjgau
doevent 會降低程式效率嗎?
作者:
sjgau
時間:
2013-10-26 03:56
回復
6#
sunnyso
會,但是 不得不 加上去。
因為,如果不加上去,CPU 就被我的程式給霸佔,
我需要的 DDE報價,就不會進來,
所以,需要 計算他 delay 程式的影響有多大?
作者:
sunnyso
時間:
2013-10-26 08:11
回復
7#
sjgau
有何方法計算效率差呢?
作者:
sjgau
時間:
2013-10-26 09:49
回復
8#
sunnyso
我有,請給我 一點點時間,
請慢慢地 密切觀察 這個 板板
作者:
sunnyso
時間:
2013-10-26 10:04
回復
9#
sjgau
感謝
作者:
sjgau
時間:
2013-10-26 12:32
irnd(s1, 100, 999, c);
事先,讓 rv1= rv2= c
doEvents() 會傳回一個值 --> RV2
if (rv2 <> rv1 ) 表示 doEvents() 已經把事情做完,
而且傳回 一個 新的值
作者:
sjgau
時間:
2013-10-27 04:36
Timer 函數範例
本範例使用 Timer 函數來讓應用程式暫停。範例中在暫停時使用到 DoEvents 來將程式執行權讓給其它程式。
Dim PauseTime, Start, Finish, TotalTime
If (MsgBox("Press Yes to pause for 5 seconds", 4)) = vbYes Then
PauseTime = 5 ' 設定暫停時間。
Start = Timer ' 設定開始暫停的時刻。
Do While Timer < Start + PauseTime
DoEvents ' 將程式執行權讓給其它程式。
Loop
Finish = Timer ' 讀取現在時刻。
TotalTime = Finish - Start ' 計算暫停所經過的時間。
MsgBox "Paused for " & TotalTime & " seconds"
Else
End
End If
作者:
handsometrowa
時間:
2013-10-31 13:54
回復
12#
sjgau
板大
其實Doevents 這個函數
能不能用白話文解釋一下呢@@" 我之前也有去查這個函數的資料
可能不是科班出生的關係吧
說真的 他的移交程式到底是什麼意思阿@@?
作者:
sjgau
時間:
2013-10-31 19:35
回復
13#
handsometrowa
Excel 的 VBA 很霸道。
你可以想像,電腦的 CPU 就像是 餐廳的 waiter,
只有 一個 water, 他要 同時伺候 十幾桌的 客人,
CPU 就在不同的桌子 中間,轉啊 轉的。
但是,VBA 就很霸道的 遇到 迴圈的時候,就綁住 CPU
不讓他 轉台,抽空去 伺候 別的 桌子,
導致 ,連 自己也無法 完成事情。
譬如說,我的 迴圈,是要 監測 是否有 DDE的報價資料近來。
CPU 如果不讓出去 ,持行 DDE 報價的動作,
我的 迴圈,再怎麼轉,也偵測不到 新進來的 報價資料。
結果大家都 不要 辦事。
DoEvents 把CPU 的時間,轉讓出去,伺候 別桌的客人。
這樣子,大家都可以動了,多好的 事情。
很像是 玩跳棋。你黨我,我擋你,大家都動不了
作者:
ui123
時間:
2013-11-7 19:39
謝謝大大的解說
作者:
sjgau
時間:
2013-11-7 21:11
回復
15#
ui123
謝謝 你的 謝謝
就 感心ㄟ
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)