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

停止我的執行緒吧!!

答題得分者是:malanlk
lcc1299
一般會員


發表:39
回覆:42
積分:21
註冊:2004-09-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-05 14:52:08 IP:221.169.xxx.xxx 未訂閱
各位大大您們好,小弟想要請教一下執行緒中止的問題:我在程式中利用file->new->other->thread object新增了一個執行緒T1,然後我的form裡有一個button內容為 : procedure TForm1.SpeedButton11Click(Sender: TObject); begin   if(Form1.SpeedButton11.Caption='開始') then begin     Form1.SpeedButton11.Caption:='停止';     T1.Create(false);    //啟動執行緒   end else begin     Form1.SpeedButton11.Caption:='開始';     怎麼把他中止掉呢????T1.??? end; end; 我想要把該執行緖中止掉,該怎麼寫呢?我是不是要新增一個有名字的執行緒才能利用點運算子找到停止的指令呢???createthread()這個嗎@@"!還是有其他方法呢~~^_^"!謝謝~~~ 發表人 - lcc1299 於 2005/10/05 15:05:54
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-05 17:50:49 IP:203.69.xxx.xxx 未訂閱
TThread.Create(CreateSuspended: Boolean) 傳進去的參數就是決定 當 thread 建立後是否要等待 CreateSuspended=True thread 會等待呼叫 TThread.Resume 才開始執行 TThread.Execute; CreateSuspended=False thread 建立後立即執行 TThread.Execute; 當呼叫 TThread.Terminate 時, TThread 會將 Terminated 這個 property 設定為 True; 所以關鍵就是 TThread.Execute.... 如果 Execute中沒有判斷 Terminated (類似 if Terminaated then Exit 這樣的程式碼)而陷入無窮迴圈, 那這個 thread 就不會停, 至到應用程式結束. 如果 Execute中沒有判斷 Terminated 但一定時間會做完, 做完 TThread.Execute 之後, thread 就算是死了... 執行緒也會還給系統 TThread.FreeOnTerminate 則是用來決定 當TThread.Execute做完後要不要自動Free, 還出佔用的資源. 因此就我目前的認知而言這個 property 主要是方便存取 TThread 的某些資源(如計算結果). 如果 TThread.Execute 結束後結果會自動處理完畢,就可以將 TThread.FreeOnTerminate 設為 True. 如果 TThread.Execute 結束後希望做些額外處理就可以設為 False, 稍後再去Free 這個 thread. TThread.OnTerminate 則是指定事件處理函數, 當TThread.Execute 結束時就會呼叫這個事件處理函數, 這時也可以存取 TThread 的某些資源(如計算結果)
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-10-05 17:59:34 IP:203.69.xxx.xxx 未訂閱
補充一下    所以 如果你想控制 TThread , 你就要在 Execute 中去做判斷 如
  for i:=0 to 1000000000000 do
  begin
    .....
    if Terminated then break; (or Exit;)
  end;
這樣當你呼叫 TThread.Terminate 後, 程式執行到 藍色那行就會結束迴圈 不然就等 Execute 結束.
系統時間:2024-05-19 15:36:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!