(* --- Le programme suivant introduit l'inverse de l'exécution du programme lorsque nous utilisons des threads et sans threads.
répondre. Lorsque vous cliquez sur le bouton utilisé, un fil est créé.
Lorsque vous modifiez la taille du formulaire et le déplace. Lorsque le bouton NousEdThread est appuyé, si le thread n'est pas créé, nous enverrons
Maintenant, vous ne pouvez rien faire d'autre avant que le programme ne soit calculé!
unité unité 1;
interface
usages
Windows, messages, systèmes, variantes, classes, graphiques, contrôles, formulaires,
Dialogues, stdctrls, boutons;
taper
Tform1 = classe (tform)
UsedThread: tbitbtn;
Ousdthread: tbitbtn;
Procédure UsedThreadClick (expéditeur: tobject);
Procédure NousEdThreadClick (expéditeur: tobject);
Privé
{Déclarations privées}
publique
{Déclarations publiques}
fin;
var
FORM1: TFORM1;
Mise en œuvre
{$ R * .dfm}
fonction myThreadfunc (p: pointeur): longInt; stdcall;
var
I: Longint;
DC: HDC;
S: String;
Commencer
Dc: = getdc (form1.handle);
Pour i: = 0 à 500000, commencez
S: = IntToStr (I);
Texte (DC, 10,10, PCHA (S), longueur (s));
fin;
Libéréc (form1.handle, dc);
fin;
Procédure TForm1.UsetThreadClick (expéditeur: tobject);
var
hthread: thandle; // définir une poignée
ThreadID: dword;
Commencer
// Créer un thread, et la fonction de thread est appelée en même temps
hthread: = CreateTheRad (nil, 0, @ mythreadfunc, nil, 0, threadid);
Si hthread = 0 alors
MessageBox (manche, «notCreatEathRead», Nil, MB_OK);
fin;
Procédure tform1.NousEdThreadClick (expéditeur: tobject);
Commencer
Mythreadfunc (nil);
// Lorsqu'aucun thread n'est créé, la fonction de thread est appelée directement
fin;
fin.