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

多執行緒問題

答題得分者是:李國維
dacshiu
一般會員


發表:3
回覆:5
積分:1
註冊:2007-05-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-07-12 14:43:41 IP:59.125.xxx.xxx 訂閱
各位高手好,
請教一下執行緒,如果我今天已經用Synchronize啟動了執行緒 ,可以在這個執行緒內再執行一個執行緒嗎?
如果不行,同時要執行兩個VCL原件,又要同時執行這樣需怎麼做?

謝謝回答

dacshiu
一般會員


發表:3
回覆:5
積分:1
註冊:2007-05-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-07-12 16:41:51 IP:59.125.xxx.xxx 訂閱
各位高手好,
另外還有個問題,為什麼執行緒在for迴圈跑完才會顯示數值?以下是我的程式碼。

[code cpp]
DisplayThread = new TDisplayThread(true);
Form2->ProgressBar1->Position = 0;
for(Form2->Total_Count = 0; Form2->Total_Count < 100; Form2->Total_Count )
{
Form2->ProgressBar1->Position = Form2->Total_Count;
DisplayThread->Resume();
Sleep(100);
DisplayThread->Suspend();
}

//---------------------------------------------------------------------------
void __fastcall TDisplayThread::Execute()
{
//---- Place thread code here ----
FreeOnTerminate = true;
while(!Terminated){
Synchronize(ValueDisplay);
}
}
//---------------------------------------------------------------------------
void __fastcall TDisplayThread::ValueDisplay()
{
Form2->Memo1->Lines->Add(Now());
}
[/code]

謝謝回答
李國維
高階會員


發表:42
回覆:287
積分:235
註冊:2003-02-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-07-13 09:10:21 IP:59.120.xxx.xxx 訂閱
加入Application->ProcessMessages()跟Refresh()試試看
dacshiu
一般會員


發表:3
回覆:5
積分:1
註冊:2007-05-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-07-15 14:39:54 IP:59.125.xxx.xxx 訂閱
請問這個需加在哪呢?

加入Application->ProcessMessages()跟Refresh()

謝謝回答
李國維
高階會員


發表:42
回覆:287
積分:235
註冊:2003-02-07

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-07-15 15:14:37 IP:59.120.xxx.xxx 訂閱
void __fastcall TDisplayThread::ValueDisplay()
{
Application->ProcessMessages();
Form2->Memo1->Lines->Add(Now());

Form2->Memo1->Refreah();
}

編輯記錄
李國維 重新編輯於 2010-07-15 15:15:17, 註解 無‧
李國維 重新編輯於 2010-07-15 15:15:57, 註解 無‧
系統時間:2017-10-18 6:31:37
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!