Warten, bis ein Thread vollständig ausgeführt ist

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Auf andere Threads warten

Wenn die vollständige Ausführung eines anderen Threads abgewartet werden muss, wird die Methode WaitFor dieses anderen Threads aufgerufen. WaitFor wird erst beendet, wenn der andere Thread beendet ist, das heißt, entweder nach Ausführung seiner Methode Execute oder nach einer Exception. Im folgenden Beispiel wird gewartet, bis ein anderer Thread ein Thread-Listenobjekt eingefügt hat. Erst dann erfolgt der Zugriff auf die Objekte in der Liste:

if ListFillingThread.WaitFor then
  begin
  with ThreadList1.LockList do
  begin
    for I := 0 to Count - 1 do
    ProcessItem(Items[I]);
  end;
  ThreadList1.UnlockList;
end;
if (pListFillingThread->WaitFor()) {
	TList *pList = ThreadList1->LockList();
	for (int i = 0; i < pList->Count; i++)
		ProcessItem(pList->Items[i]);
	ThreadList1->UnlockList();
}


In diesem Beispiel wird nur dann auf die Listenelemente zugegriffen, wenn die Methode WaitFor signalisiert hat, dass die Liste erfolgreich gefüllt wurde. Dieser Rückgabewert muss von der Execute-Methode desjenigen Threads zugewiesen werden, auf den gewartet wurde. Da das Ergebnis der Thread-Ausführung allerdings nur für die Threads relevant ist, welche die Methode WaitFor aufrufen, und nicht für Quelltext, der Execute aufruft, gibt die Methode Execute keinen Wert zurück. Stattdessen setzt sie die Eigenschaft ReturnValue. ReturnValue wird von der Methode WaitFor zurückgeliefert, wenn diese von anderen Threads aufgerufen wird. Rückgabewerte sind Integerwerte. Ihre Anwendung legt deren Bedeutung fest.

Siehe auch