關於thread的開始,結束,暫停的控制.... |
尚未結案
|
linda_wei
一般會員 發表:44 回覆:31 積分:20 註冊:2004-04-08 發送簡訊給我 |
void __fastcall TForm1::FormCreate(TObject *Sender)
{
a_thread=new One1Thread(true);
b_thread=new Two2Thread(true);
} void __fastcall TForm1::Button1Click(TObject *Sender)
{ //----start鈕
a_thread->Resume();
b_thread->Resume();
} void __fastcall TForm1::Button2Click(TObject *Sender)
{ //----Stop鈕
a_thread->Suspend();
b_thread->Suspend(); a_thread->Terminate();
b_thread->Terminate();
} 為什麼每當我按下Stop鈕時...client檢查到斷線呢? ps.我手動開啟socket,沒用BCB裡的物件...
我該如何做出如 onClientDisconnect的效果呢?
(即,當我按下Stop鈕, 2支thread都會stop, client會自己動線)
(client的作法是,只要一連線上, 會做select的動作,一邊送data給server, 一邊收server給的data...)
(而client是當 write給server的return==-1時, 表示斷線...)
(但是目前的狀況是, 按下stop鈕, client的 write 還是正常 why??)
|
HomeSound
中階會員 發表:44 回覆:178 積分:94 註冊:2002-08-31 發送簡訊給我 |
linda_wei您好:
TReadT *ReadTThread;
ReadTThread = new TReadT(false); //開啟讀取執行緒
ReadTThread->Terminate();//關閉執行緒
暫停於多緒的Execute()函數裡面寫
void __fastcall TReadT::Execute() { FreeOnTerminate = true;//執行緒的自動被釋放 while(1) { if(Form1->Tag==0) //可控制要不要暫停多緒處理 { ........ .......... Synchronize(要動做的函數名); } } }希望對您有所助益 --==多看.多學.多聽==--
------
--==多看.多學.多聽==-- |
zcecil
初階會員 發表:0 回覆:28 積分:45 註冊:2003-06-27 發送簡訊給我 |
TThread 的Terminate method只是把thread裡一個property設定為true.
實際上的結束動作要自己寫.help file裡是這麼說的 For Terminate to work, the thread's Execute method and any methods that Execute calls should check Terminated periodically and exit when it's true. 也就是說, 你的execute裡要自己檢查 while(!Terminated)
{
//do something
}
|
CoffeeX
中階會員 發表:18 回覆:121 積分:72 註冊:2005-02-18 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |