Wann ein Thread manuell freigegeben werden soll

8

Wenn ich einen (suspendierten) Thread aus dem Haupt-Thread als solchen erzeuge:

%Vor%

Wie gehe ich vor, um diese Instanz nach Abschluss zu befreien? (Das heißt, die Execute-Prozedur hat die Ausführung beendet. Angenommen, ich habe Ausnahmen erfasst).

Dies Korrekte Art, ein tthread-Objekt zu zerstören zeigt einen Weg (über die PostMessage-Prozedur), der gut funktioniert und Sinn macht. Was passiert jedoch, wenn ich den Thread erstelle und ich kein Handle für ein Formular oder etwas habe, wo ich die PostMessage-Prozedur aufrufen kann? zB erstelle ich den Thread innerhalb einer Klasse direkt von TObject?

%Vor%

Also, denke ich, wie kann ich einen Thread ohne Zugriff auf ein Formular-Handle freigeben?

Danke

    
Jason 24.11.2011, 06:01
quelle

1 Antwort

7

Offensichtlich muss irgendwo ein Verweis auf den instanziierten Thread sein. Aber ich kann mich auf Ihren Wunsch beziehen: Sie wollen eine immer-fertig-nie-Pflege-Lösung.

Ich schlage vor, dass Sie die Existenz des Threads durch eine separate ThreadController-Klasse verwalten:

%Vor%

Um diesen Beispiel-Thread auszuführen, der in 2-Sekunden-Intervallen von 5 bis 19 zählt und eine Rückmeldung und eine Möglichkeit für eine vorzeitige Beendigung bietet, rufen Sie den Hauptthread auf:

%Vor%

Dieser Thread wird automatisch beim Beenden des Threads oder der Anwendung beendet.

Vielleicht ist diese Einheit für Ihre Situation etwas übertrieben, weil sie mehrere Threads (des gleichen Typs) verarbeiten kann, aber ich denke, sie beantwortet Ihre Frage. Passen Sie nach Ihren Wünschen.

Partieller Ursprung dieser Antwort: NLDelphi.com .

    
NGLN 24.11.2011, 08:40
quelle

Tags und Links