System.Classes.TThread.Queue
Delphi
procedure Queue(AMethod: TThreadMethod); overload; inline;
procedure Queue(AThreadProc: TThreadProcedure); overload; inline;
class procedure Queue(const AThread: TThread; AMethod: TThreadMethod); overload; static;
class procedure Queue(const AThread: TThread; AThreadProc: TThreadProcedure); overload; static;
C++
void __fastcall Queue(TThreadMethod AMethod)/* overload */;
void __fastcall Queue(_di_TThreadProcedure AThreadProc)/* overload */;
static void __fastcall Queue(TThread* const AThread, TThreadMethod AMethod)/* overload */;
static void __fastcall Queue(TThread* const AThread, _di_TThreadProcedure AThreadProc)/* overload */;
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
procedure function |
public | System.Classes.pas System.Classes.hpp |
System.Classes | TThread |
Description
Exécute un appel de méthode dans le thread principal.
Queue provoque l'exécution asynchrone de l'appel spécifié par AMethod
en utilisant le thread principal, ce qui évite les conflits multithreads.
Avertissement: Si le thread de l'appelant est le thread principal, Queue exécute le thread directement (de manière synchrone). Dans ce cas, utilisez ForceQueue pour mettre en file d'attente l'exécution d'un appel de méthode dans le thread principal.
AMethod
associe le thread de l'appelant :
- Pour les méthodes statiques, vous pouvez associer
AMethod
à n'importe quel thread en utilisant le paramètreAThread
. - Vous pouvez utiliser
nil/NULL
en tant que paramètreAThread
si vous n'avez pas besoin de savoir les informations du thread de l'appelant dans le thread principal. - RemoveQueuedEvents utilise ces informations de thread pour trouver la méthode correcte mise en file d'attente.
Si vous n'êtes pas sûr qu'un appel de méthode soit adapté à l'utilisation de threads, appelez-la dans la méthode Synchronize ou Queue pour garantir son exécution dans le thread principal.
A l'inverse de la méthode Synchronize, l'exécution du thread en cours est autorisé à se poursuivre. Le thread principal traitera éventuellement toutes les méthodes en file d'attente.
Remarque: Vous pouvez aussi protéger les méthodes non sécurisées en utilisant des sections critiques ou le synchroniseur en écriture exclusive multi-lecture.
Voir aussi
- System.Classes.TThread.Execute
- System.Classes.TThread.Synchronize
- System.Classes.TThread.RemoveQueuedEvents