不废话,贴代码
1. 线程对象
//---------------------------------------------------------------------------
#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include "SPComm.hpp"
//---------------------------------------------------------------------------
class comthread : public TThread
{
private:
TComm *pComm;
TMemo *pmemo;
protected:
void __fastcall Execute();
public:
__fastcall setComm(TComm *pCom);
__fastcall setMemo(TMemo *memo);
__fastcall comthread(bool CreateSuspended);
};
//---------------------------------------------------------------------------
#endif
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
// Important: Methods and properties of objects in VCL can only be
// used in a method called using Synchronize, for example:
//
// Synchronize(UpdateCaption);
//
// where UpdateCaption could look like:
//
// void __fastcall comthread::UpdateCaption()
// {
// Form1->Caption = "Updated in a thread";
// }
//----------- ----------------------------------------------------------------
__fastcall comthread::comthread(bool CreateSuspended)
: TThread(CreateSuspended)
{
}
//---------------------------------------------------------------------------
__fastcall comthread::setComm(TComm *pCom)
{
pComm = pCom;
}
//---------------------------------------------------------------------------
__fastcall comthread::setMemo(TMemo *memo)
{
pmemo = memo;
}
//---------------------------------------------------------------------------
void __fastcall comthread::Execute()
{
int waitTime = 1000;
//---- Place thread code here ----
int pTime = 0, nowTime;
while(1){
nowTime = GetTickCount();
if(0 == pTime || (nowTime - pTime > waitTime)){
//do something need long time;
pmemo->Lines->Add(IntToStr(nowTime - pTime));
pTime = nowTime;
}
else if(pTime > nowTime){
pTime = nowTime;
}
else{
Sleep(100);
}
}
}
//---------------------------------------------------------------------------
2. 主窗口调用
void __fastcall TForm1::Button1Click(TObject *Sender)
{
comthread *pthread = new comthread(true);
pthread->setComm(Comm1);
pthread->setMemo(Memo1);
pthread->Resume();
}