Définition d'objets thread
De RAD Studio (Français)
Remonter à Définition d'objets thread - Index
Dans la plupart des applications, vous pouvez utiliser un objet thread pour représenter un thread d'exécution de l'application. Les objets thread simplifient l'écriture d'applications multithreads en encapsulant les utilisations les plus fréquentes des threads.
Remarque : Les objets thread ne permettent pas de contrôler les attributs de sécurité ou la taille de la pile des threads. Si vous souhaitez contrôler ces paramètres, vous devez utiliser la fonction BeginThread. Même si vous utilisez BeginThread, vous pouvez néanmoins utiliser les objets de synchronisation de threads et les méthodes décrites dans Coordination de threads.
Pour utiliser un objet thread dans votre application
- Créez un nouveau descendant de classes.TThread, choisissez dans le menu principal.
- Dans la boîte de dialogue Nouveaux éléments, sous Fichiers Delphi, double-cliquez sur Objet thread et entrez un nom de classe, tel que TMyThread.
- Cochez la case Thread nommé et spécifiez un nom de thread (applications VCL seulement).
- Cliquez sur OK, l'éditeur de code crée un nouveau fichier unité pour implémenter le thread.
Pour plus d'informations sur les threads nommés, voir Nommer un thread.
Remarque : A la différence de la plupart des boîtes de dialogue de l'EDI demandant un nom de classe, la boîte de dialogue Nouvel objet thread ne préfixe pas automatiquement le nom de classe avec un 'T'.
Le fichier unité automatiquement généré contient le squelette du code de la nouvelle classe thread. Si vous avez nommé ce thread TMyThread, le code doit avoir l'aspect suivant :
unit Unit2; interface uses Classes; type TMyThread = class(TThread) private { Déclarations privées } protected procedure Execute; override; end; implementation { TMyThread } procedure TMyThread.Execute; begin { placer le code du thread ici } end; end.
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit2.h" #pragma package(smart_init) //--------------------------------------------------------------------------- __fastcall TMyThread::TMyThread(bool CreateSuspended): TThread(CreateSuspended) { } //--------------------------------------------------------------------------- void __fastcall TMyThread::Execute() { // ---- Placez le code du thread ici ---- } //---------------------------------------------------------------------------
Dans le fichier unité généré automatiquement, vous pouvez
- Facultativement, initialiser le thread.
- Ecrire la fonction thread en remplissant la méthode Execute.
- Facultativement, écrire du code de nettoyage.