檢查執行緒(thread)問題 |
答題得分者是:DavidLo
|
kenbcb
中階會員 發表:171 回覆:129 積分:60 註冊:2003-07-15 發送簡訊給我 |
|
zcecil
初階會員 發表:0 回覆:28 積分:45 註冊:2003-06-27 發送簡訊給我 |
一個方法是直接呼叫 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 發送簡訊給我 |
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
}
}
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |