Anzeigen: Delphi C++
Anzeigeeinstellungen

System.Classes.TThread.Synchronize

Aus XE2 API Documentation
Wechseln zu: Navigation, Suche

Delphi

procedure Synchronize(AMethod: TThreadMethod); overload;
procedure Synchronize(AThreadProc: TThreadProcedure); overload;
class procedure Synchronize(AThread: TThread; AMethod: TThreadMethod); overload; static;
class procedure Synchronize(AThread: TThread; AThreadProc: TThreadProcedure); overload; static;

C++

void __fastcall Synchronize(TThreadMethod AMethod)/* overload */;
void __fastcall Synchronize(_di_TThreadProcedure AThreadProc)/* overload */;
static void __fastcall Synchronize(TThread* AThread, TThreadMethod AMethod)/* overload */;
static void __fastcall Synchronize(TThread* AThread, _di_TThreadProcedure AThreadProc)/* overload */;

Inhaltsverzeichnis

Eigenschaften

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

Beschreibung

Führt einen Methodenaufruf im Haupt-Thread aus.

Synchronize bewirkt, dass der von AMethod festgelegte Aufruf im Haupt-Thread ausgeführt wird. Dabei werden Multithread-Konflikte verhindert. Der aktuelle Thread wird im Parameter AThread übergeben.

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

Die Ausführung des aktuellen Threads wird während der Asführung der Methode im Haupt-Thread ausgesetzt.

Warnung: Rufen Sie Synchronize nicht aus dem Haupt-Thread auf. Dies kann zu einer Endlosschleife führen.
Hinweis: Unsichere Methoden können auch mit den kritischen Abschnitten oder mit TMultiReadExclusiveWriteSynchronizer-Objektes geschützt werden.
Hinweis: Wenn Sie die statische Version der Methode Synchronize mit nil/NULL als der erste Parameter verwenden, wird die von AMethod referenzierte Methode im Haupt-Thread synchronisiert.

Synchronize kann bespielsweise zum Interagieren mit einer VCL-Komponente verwendet werden. Mit einer anonyme In-Place-Methode können Sie die Probleme bei der Übergabe von Variablen an die zu synchronisierende Methode lösen:

Synchronize(
  procedure
  begin
    Form1.Memo1.Lines.Add(Begin Execution’);
  end);

Siehe auch

Codebeispiele

Frühere Versionen
Übersetzungen