#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
// Suspended Thread erstellen, d.h. der Thread läuft erstmal nicht los
pAnzeigeThread = new TTestThread(true, Edit3);
pAnzeigeThread->Priority = tpIdle; // Idle-Thread erstellen
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
pAnzeigeThread->Terminate(); // Thread killen
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
// Wenn der Thread nicht angehalten wurde, dann starten
if (pAnzeigeThread->Suspended)
{
pAnzeigeThread->Resume();
}
else
{
pAnzeigeThread->Suspend(); // sonst anhalten
}
}
form.h
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include "UThread.h"
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // Von der IDE verwaltete Komponenten
TEdit *Edit3;
TButton *Button1;
void __fastcall FormDestroy(TObject *Sender);
void __fastcall Button1Click(TObject *Sender);
private: // Anwender-Deklarationen
TTestThread *pAnzeigeThread; // Zeiger auf den Thread deklarieren
public: // Anwender-Deklarationen
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Thread Klasse
Thread.cpp
#include <vcl.h>
#pragma hdrstop
#include "UThread.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
__fastcall TTestThread::TTestThread(bool CreateSuspended, TEdit *Edit) : TThread(CreateSuspended)
{
FreeOnTerminate = true; // wenn der Thread gekillt wird, dann gleich entfernen
Ausgabe = Edit; // die Ausgabe erfolgt in einem Edit-Feld, das auf der Mainform liegt
uiCount = 0;
}
//---------------------------------------------------------------------------
// Hier steht der Code der vom Thread ausgeführt wird
//---------------------------------------------------------------------------
void __fastcall TTestThread::Execute()
{
// solange der Thread nicht gekillt wurde
while (!Terminated)
{
Ausgabe->Text = IntToStr(uiCount);
if (uiCount < 100000) uiCount++;
else uiCount = 0;
}
}
[/sourcecode]
<li>Thread.h</li>
[sourcecode language="cpp"]
#ifndef UThreadH
#define UThreadH
//---------------------------------------------------------------------------
#include <Classes.hpp->
//---------------------------------------------------------------------------
class TTestThread : public TThread
{
private:
unsigned int uiCount;
protected:
TEdit *Ausgabe; // Zeiger auf das Ausgabe-Edit-Feld
void __fastcall Execute();
public:
__fastcall TTestThread(bool CreateSuspended, TEdit *Edit);
};
//---------------------------------------------------------------------------
#endif