Seite 1 von 2
ein einfaches Beispiel eines Multithread-Delphi-Programms. In diesem Beispiel erstellen wir eine Delphi-Anwendung mit zwei Threads
jeder druckt Nachrichten an die Konsole.
delphi
program MultithreadedApp;{$APPTYPE CONSOLE} Verwendet SysUtils, Klassen, Windows; Typ TMyThread = Klasse(TThread) geschützt Prozedur ausführen; überschreiben; Ende; Prozedur TMyThread.Execute; beginnen // Nachrichten aus jedem Thread ausgeben solange es nicht beendet ist beginnen Writeln('Thread-ID: ', GetCurrentThreadId, ' läuft.'); Schlaf(1000); // 1 Sekunde lang schlafen Ende; Ende; var Thread1, Thread2: TMyThread; beginnen versuchen // Zwei Threads erstellen Thread1 := TMyThread.Create(False); Thread2 := TMyThread.Create(False); // Warten, bis die Threads beendet sind Thread1.WaitFor; Thread2.WaitFor; außer auf E: Ausnahme tun Writeln('Exception: ', E.ClassName, ': ', E.Message); Ende; Ende.
In diesem Code:
TMyThread ist eine benutzerdefinierte Thread-Klasse, die von TThread geerbt wurde. Die Execute-Methode wird überschrieben, um den Code zu definieren, der im Thread ausgeführt wird. Jeder Thread gibt seine ID jede Sekunde mit GetCurrentThreadId und Writeln an die Konsole aus. Wir erstellen zwei Instanzen von TMyThread, Thread1 und Thread2, und übergeben False an den Konstruktor, um anzugeben, dass die Threads sofort mit der Ausführung beginnen sollen. Schließlich rufen wir WaitFor für beide Threads auf, um zu warten, bis die Ausführung abgeschlossen ist.



{$APPTYPE CONSOLE}
Verwendet
SysUtils, Klassen, Windows;
Typ
TMyThread = Klasse(TThread)
geschützt
Prozedur ausführen; überschreiben;
Ende;
Prozedur TMyThread.Execute;
beginnen
// Nachrichten aus jedem Thread ausgeben
solange es nicht beendet ist
beginnen
Writeln('Thread-ID: ', GetCurrentThreadId, ' läuft.');
Schlaf(1000); // 1 Sekunde lang schlafen
Ende;
Ende;
var
Thread1, Thread2: TMyThread;
beginnen
versuchen
// Zwei Threads erstellen
Thread1 := TMyThread.Create(False);
Thread2 := TMyThread.Create(False);
// Warten, bis die Threads beendet sind
Thread1.WaitFor;
Thread2.WaitFor;
außer
auf E: Ausnahme tun
Writeln('Exception: ', E.ClassName, ': ', E.Message);
Ende;
Ende.