While 的問題 |
答題得分者是:hagar
|
AJ
一般會員 發表:9 回覆:19 積分:20 註冊:2003-06-27 發送簡訊給我 |
最近遇到一個while的問題,我在程式中設置一個lock旗標,功用是避免不同函式同時存取相同全域record,當我的thread需存取時先檢查旗標是否為false,是則設為true,執行完畢再設為false,否則繼續檢查,其他函式亦相同。
檢查旗標我使用while來做,語法如下:
while true do begin if lock then continue else lock:=true; ..... ..... lock:=false; end;這時就有問題了,當某一函式跑到while時,整個AP程式就停頓下來,一直在跑WHILE,確定不會陷入無限迴圈,但是thread卻很正常,看起來存取權似乎被thread佔住,可是thread中也使用以上相同語法,為什麼會這樣呢?有大大能幫我解惑嗎? 發表人 - AJ 於 2003/08/13 09:37:45 |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
AJ
一般會員 發表:9 回覆:19 積分:20 註冊:2003-06-27 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
如果不加 Application.ProcessMessages; 這行的話
程式會一直處理 while 這個迴圈的工作
這時 AP 仍有在接收 message, 不過都放在 Queue 裏, 沒有處理
因此 AP 看起來像當掉了
而 Application.ProcessMessages; 這行的意思
就是先 "暫停" while 迴圈的工作
去處理 Queue 裏的 message
更詳細的可以看 ProcessMessages 的 help 說明. ---
--<-<-<@
|
AJ
一般會員 發表:9 回覆:19 積分:20 註冊:2003-06-27 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |