線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1774
推到 Plurk!
推到 Facebook!

檢查執行緒(thread)問題

答題得分者是:DavidLo
kenbcb
中階會員


發表:171
回覆:129
積分:60
註冊:2003-07-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-11-02 17:18:51 IP:61.222.xxx.xxx 未訂閱
請問各位, 如何檢查thread是否在活著並運行中. 我想在timer元件中,加入此功能,當發現thread死了時,讓thread重新run起來. 請各位大大們指導或範例參考.
zcecil
初階會員


發表:0
回覆:28
積分:45
註冊:2003-06-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-11-03 11:22:01 IP:220.130.xxx.xxx 未訂閱
一個方法是直接呼叫 TThread 的 WaitFor (), 在thread結束之後這個function才會return. 不過這樣比較不能控制, 萬一thread發生什麼意外可能會影響到本來的程式. 我通常是 TThread * MyThread; // Thread開始執行 while (WaitForSingleObject ( MyThread->Handle, 100) == WAIT_TIMEOUT ) { Sleep(10); } // 到這裡就是 thread 結束了
DavidLo
高階會員


發表:17
回覆:225
積分:168
註冊:2004-07-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-11-05 22:13:01 IP:220.139.xxx.xxx 未訂閱
Hi! 我想的方法 int watchdog_count=0; void __fastcall YourThread::Execute() { while (!Terminated) { //your thread program watchdog_count=0;//reset watchdog count } } void __fastcall TForm1::Timer1Timer(TObject *Sender) { watchdog_count ; if(watchdog_count>100) { watchdog_count=0; //thread is dead,restart thread again } }
系統時間:2024-11-23 7:28:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!