用BCB寫的最簡單的一個多執行緒小程式 |
|
axsoft
版主 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
用BCB寫的最簡單的一個多執行緒小程式
========================================================
//.cpp中的執行緒描述
_fastcall TMyThread::TMyThread(void):TThread(true)
{
FreeOnTerminate=true;
Resume();
} //執行緒宣告
void __fastcall TMyThread::Execute()//執行緒 function
{
for(int i=1;i<4;i )
Form1->Memo1->Text=Form1->Memo1->Text IntToStr(i) "我得到了變數--我的執行緒\r\n";
}
void __fastcall TForm1::Button2Click(TObject *Sender)//執行執行緒
{
MyThread=new TMyThread();
MyThread->FreeOnTerminate=true;
}
//.h中的執行緒類別定義
//宣告執行緒類別
class TMyThread:public TThread
{
public:
__fastcall TMyThread(void);
private:
void __fastcall Execute(void);
}; //可以在.h的視窗類別定義中加入
TMyThread *MyThread; //宣告一個新的執行緒
| ||||
axsoft
版主 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
Thread Basics 參考網頁: http://www.temporaldoorway.com/programming/cbuilder/threads/basics.htm TThread In C++ Builder, threads are created as instances of a class derived from TThread. The following shows the basic elements of a TThread derived class, and the member functions you need to override. Note that a thread can have any desired internal data or additional functions. Also note that this thread class inlines the member functions, but that is not required. class SampleThread: public TThread
{
private: void __fastcall Execute(void) // This is what gets run when the thread starts
{
while (!Terminated)
{
// Wait for an event or perform processing if (!Terminated)// This is optional but normal
{
Synchronize(UpdateTheMainThreadDataOrControls);
};
};
}; public: __fastcall SampleThread(StartupData Whatever /* You can provide any data the thread needs to run properly */): TThread(TRUE) // Start the thread suspended
{
// Use the StartupData to initialize class instance data here FreeOnTerminate = true;
Resume(); // Thread now runs
}; __fastcall ~SampleThread(void)
{
// Cleanup, deallocate, etc.
}; void __fastcall Terminate(void)// This is what you call to terminate the thread; use Suspend to pause it
{
TThread::Terminate();
// If the main loop is waiting on an event, set the event here
};
}; 時間就是金錢
|
||||
jackwu
一般會員 發表:28 回覆:54 積分:16 註冊:2002-08-18 發送簡訊給我 |
|||||
axsoft
版主 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
引言: 我剛好在學如何寫Thread的程式,穫益良多,謝謝 不過這一行 ==>TMyThread *MyThread; //宣告一個新的執行緒 應該要是要加在.cpp的檔案中其實這個宣告放在哪都無所謂,如果TMyThread *MyThread;宣告在MyThread.H中, 而在MyThread.cpp中Include MyThread.H,其實宣告的方法是相同的! 只要讓MyThread.cpp中的自訂函式能看見 MyThread這個物件就可以了! <>寫程式沒有絕對的標準法則,完全是程式員的心靈構思 !> <>網><>路>志<>工>聯盟---- href="http://www.vista.org.tw">http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]--- |
||||
kkid
一般會員 發表:1 回覆:5 積分:1 註冊:2002-07-25 發送簡訊給我 |
|||||
jackwu
一般會員 發表:28 回覆:54 積分:16 註冊:2002-08-18 發送簡訊給我 |
|||||
tender
初階會員 發表:23 回覆:90 積分:37 註冊:2002-09-26 發送簡訊給我 |
|||||
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
對於 TThread 小弟真的是不太了解,看了您的範例發現只有 MyThread=new TMyThread(); 卻沒有 delete MyThread; 請問,TThread 都是不用 delete 的嗎?
之前看同事的 Code 也是覺得為什麼只有 new 沒有 delete 呢?
而我多事加上 delete 卻又發生 Exception!! 沒空更新的網頁...
------
http://www.ViewMove.com |
||||
China Join
中階會員 發表:81 回覆:242 積分:89 註冊:2003-03-12 發送簡訊給我 |
|||||
andrewking
一般會員 發表:3 回覆:12 積分:3 註冊:2005-10-13 發送簡訊給我 |
|||||
CoffeeX
中階會員 發表:18 回覆:121 積分:72 註冊:2005-02-18 發送簡訊給我 |
|||||
kenlee1109
初階會員 發表:20 回覆:40 積分:27 註冊:2006-08-17 發送簡訊給我 |
|||||
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
報歉,我還是雞婆一下…修正一下你的說法。希望會有一些更好的幫助! { void __fastcall TMyThread::Execute() TThread 程式裏不能有圖形的指令,如 Label1->Caption = "xxx" 這樣的句子也不行,這是我的經驗, 所以只有將訊息寫入變數中,再用 Timer 於定時將 Thread 中的變數寫出,哈!
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
||||
jling60
一般會員 發表:0 回覆:1 積分:0 註冊:2010-06-07 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |