System.Classes.TThread.Queue

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

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 */;

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
procedure
function
public
System.Classes.pas
System.Classes.hpp
System.Classes TThread


Beschreibung

Führt einen Methodenaufruf im Haupt-Thread aus.

Queue bewirkt, dass der in AMethod festgelegte Aufruf im Haupt-Thread asynchron ausgeführt wird, und verhindert somit Multithread-Konflikte.

Warnung: Wenn der Thread des Aufrufers der Hauptthread ist, führt Queue den Aufruf direkt (synchron) aus. Verwenden Sie in diesem Fall ForceQueue, um die Ausführung des Methodenaufrufs in dem Hauptthread in die Warteschlange zu stellen.

AMethod assoziiert den Thread des Aufrufers:

  • Für statische Methoden können Sie AMethod jedem Thread mithilfe des Parameters AThread zuordnen.
  • Wenn Sie die Informationen für den Thread des Aufrufers im Haupt-Thread nicht brauchen, können Sie nil/NULL als Parameter AThread verwenden.
  • RemoveQueuedEvents verwendet diese Thread-Informationen, um die entsprechende Methode aus der Warteschlange zu finden.

Wenn Sie nicht genau wissen, ob eine Methode Thread-sicher ist, rufen Sie sie aus den Methoden Synchronize oder Queue auf, um zu gewährleisten, dass sie im Haupt-Thread ausgeführt wird.

Im Gegensatz zu Synchronize ist die Ausführung des aktuellen Threads zum Fortsetzen zulässig. Der Haupt-Thread verarbeitet alle Methoden aus der Warteschlange.

Hinweis: Sie können unsichere Methoden auch durch kritische Abschnitte oder TMultiReadExclusiveWriteSynchronizer schützen.

Siehe auch

Codebeispiele