Thread + Queue 的範例 -- 不看可惜,可以學到不少的額外技巧!! |
|
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
希望大家指教,若有程式上不了解的,或是需要修正的,也請發問! 放在這討論區而沒放入作品區就是為了可以進一步的互相討論,這算是個範例,不能算是個成品吧! 小作品,應該很多不足的地方,還請見諒! 建議操作實驗:
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan
附加檔案:ThreadQue.rar
|
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
|
Solaris2005
一般會員 發表:7 回覆:13 積分:4 註冊:2003-05-19 發送簡訊給我 |
|
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
那是TNT元件,不過我的project中沒使用到,你可以在IDE環境下
Project->Edit Option Source 然後會出現一個xml的檔,你在檔中找 TNTLIBR.LIB ,應該有二個,把這二個值刪了,然後存檔(Save All)。再compile。若有發現類似找不到的,用同樣的方法。 ===================引 用 文 章=================== 這位前輩你好, 我在compile的時候出現了這個錯誤訊息 [Linker Fatal Error] Fatal: Unable to open file 'TNTLIBR.LIB'
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
Solaris2005
一般會員 發表:7 回覆:13 積分:4 註冊:2003-05-19 發送簡訊給我 |
|
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
請改下載下面的看看。我改成dynamic link package
前輩你好 我刪除了之後, 一樣出現那行訊息, 去看xml檔已經沒有那個字眼了 關閉再開, 之前刪除的那兩個名稱, 又出現了
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
Solaris2005
一般會員 發表:7 回覆:13 積分:4 註冊:2003-05-19 發送簡訊給我 |
前輩你好 這一版是ok的, 不過要將 build with runtime package取消打勾才行 不然會出現另一個錯誤訊息, 有一個問題再請教一下 我依照您的方式去做了之後, 我的程式裡, 都要按兩次start才可以resume()成功 會是哪裡的問題呢?
請改下載下面的看看。我改成dynamic link package
前輩你好 我刪除了之後, 一樣出現那行訊息, 去看xml檔已經沒有那個字眼了 關閉再開, 之前刪除的那兩個名稱, 又出現了 |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
我附的程式是否也要二次呢? 或是你修改後的程式才需要二次?
若是你修改後的需要二次,那可以請你把關於Push Work這部份的程式還有 mWorker->Resume(); 的那段function貼出來? 還有,一開始的時候 new的時候 mWorker = new Worker(true); 確定有用true嗎? 還是你用了False? ===================引 用 文 章=================== 我依照您的方式去做了之後, 我的程式裡, 都要按兩次start才可以resume()成功 會是哪裡的問題呢?
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
Solaris2005
一般會員 發表:7 回覆:13 積分:4 註冊:2003-05-19 發送簡訊給我 |
你的程式完全ok 我自己也試著做了一個單純的例子, 也是ok的, 可是把一樣的東西掛到我原本的程式中之後, 卻發生要按兩次, 或著多次才會進行resume(), 這我就覺得好奇怪了
|
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
請注意一件事: 若是 suspend( )被按了(執行了) n 次,那麼resume也要被執行n次才會整個thread再度活起來,你可以把我的程式的button disable的部份全都先mark 起來,然後pause 連按3次,這時候你去按resume一次,二次都會不有反應,直到三次才開始又動。
是否有可能你的程式,或是你不小心,連pause了幾次呢? 用中斷的方式追程式一下看看,或者在pause指令的後面加個MessageBeep( );然後仔細的聽嗶嗶幾聲。切記不要使用ShowMessage。在thread中使用這個方法可能會當。 ===================引 用 文 章=================== 你的程式完全ok 我自己也試著做了一個單純的例子, 也是ok的, 可是把一樣的東西掛到我原本的程式中之後, 卻發生要按兩次, 或著多次才會進行resume(), 這我就覺得好奇怪了
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
Solaris2005
一般會員 發表:7 回覆:13 積分:4 註冊:2003-05-19 發送簡訊給我 |
前輩, 你太神啦~ 我去追蹤了一下, 果然在程式執行之前 有一行已經先做了pause的動作 ! 這就是問題的所在了 ! 太神啦~~~~ 多謝多謝 ! 我的程式已經可以正常run了, 感謝 !
|
z858328y
一般會員 發表:7 回覆:9 積分:3 註冊:2006-08-29 發送簡訊給我 |
|
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
你好,因為最近ktop還在改版,所以過去的一些連結有些問題; 請改下面的網址來下載: http://delphi.ktop.com.tw/download.php?download=upload/ThreadQue2.rar 若你有compiler上的問題,請先看上面的一些問題排除,若還有問題,可留言或寫信給我! 蕭沖 qs.xiao@gmail.com http://aftcast.blogspot.com/ 生有涯而知無涯,以有涯隨無涯,殆矣
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
johnlp
一般會員 發表:2 回覆:13 積分:8 註冊:2004-10-31 發送簡訊給我 |
aftcast你好,有個問題想請教
在WorkerThread.cpp中 void __fastcall Worker::Execute() { ... item.mpFunction(item); //run user define function ... Synchronize(UpdateMemo); ... } } 標記的這兩行所執行的function如下: void fun1(const WORK_ITEM &item) { String s = String().sprintf("%s Num=%d from FUN_1",item.mNameParam,item.mNo); for (int i=0; i < 100000000; i); // just emulate some further process MainForm->Memo1->Lines->Add(s); } void __fastcall Worker::UpdateMemo(void) { MainForm->Memo2->Lines->Delete(0); // delete first item from memo2 } 我的問題是...上述兩個function中都有牽涉到vcl元件的操作(如上標記處) 為什麼後者使用Synchronize , 前者卻不使用 , 有什麼特別的用意嗎? |
jcjroc
高階會員 發表:21 回覆:279 積分:115 註冊:2002-09-18 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |