Hiho,
ich benutze Delphi 2009 U3 auf Win7 x64 RTM.
Folgendes Zenario:
1. ich habe einen Work-Thread erstellt um die
GUI zugänglich zu lassen während das Programm arbeitet.
2. Habe ich die Verschiedenen Aufgaben ebenfalls in eigene Thread in deren eigenen Units gepackt
Das Problem ist dass der Arbeits-Thread auf beendigung der Aufgaben-Threads warten muss und dafür verwende ich Global in der
GUI angelegte ThreadVariablen und .waitfor... also z.b. in der
GUI steht dann
WorkThread: TWorkThread = nil;
ThreadAufgabe1: TThreadAufgabe1 = nil;
...
und auf diese variablen greif ich im Worker Thread auch zu und erstelle den Thread da drinnen
Delphi-Quellcode:
if (ThreadAufgabe1 = nil) then
begin
ThreadAufgabe1 := TThreadAufgabe1.Create;
ThreadAufgabe1.OnTerminate := frmGUI.OnAufgabe1ThreadTermination;
ThreadAufgabe1.Resume;
ThreadAufgabe1.WaitFor;
end;
der Thread läuft auch durch und wartet auch.. aber irgendwie kommt der nicht zum ende?! Wenn ich Stoppunkte setze, und versuche mit F9 dahin zu springen, dann freezed der sofort! Wenn ich aber den thread nur mit F7 durchgehe, dann passiert der all meine Stoppunkte und freezed erst beim end; vom Execute part.
Was kann da schief laufen und wie kann ich das rausfinden warum das so ist?
Achja.. in Onterminate kommt er gar nicht erst rein!