全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2764
推到 Plurk!
推到 Facebook!

關於thread的開始,結束,暫停的控制....

尚未結案
linda_wei
一般會員


發表:44
回覆:31
積分:20
註冊:2004-04-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-11-15 14:45:39 IP:211.75.xxx.xxx 未訂閱
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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-12-10 15:08:10 IP:219.81.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-12-12 10:14:01 IP:220.130.xxx.xxx 未訂閱
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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-08-02 20:56:16 IP:140.125.xxx.xxx 未訂閱

關於終結的部份:

Form1::MyTerminateFunct()

{

//要作的事

}

MyThread->OnTerminate = MyTerminateFunct;

關於delete 與freeOnTerminate的優先順序有大大知道嗎,

能在這個MyTerminateFunct中直接delete MyTherad?

或是freeOnTerminate = true是否能正確的執行MyTerminateFunct?

------
=.=???
系統時間:2024-04-25 15:56:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!