Es scheint so als ob das Programm est nach erhalt einer Message WAIT_OBJECT_0 zurückgiebt.
Deshalb hab ich das jetzt mit WaitforMultipleObjects gelöst und zwar so.
Delphi-Quellcode:
repeat
// Auf Threads warten
dwWaitResult := WaitforMultipleObjects(length(ThreadArray), @ThreadArray, true, 100);
if dwWaitResult <> WAIT_OBJECT_0
then
begin
StatusbarUpdate;
// Statusbar updaten / Progress berechnen
pmShowErrors.Enabled := bError
and (tvSourceDestination.FocusedNode <>
nil);
mmShowErrors.Enabled := pmShowErrors.Enabled;
Application.ProcessMessages;
// GUI aktualisieren
end;
until dwWaitResult = WAIT_OBJECT_0;
// keinen Threads mehr zum warten
Aber warum die erste Funktion auf dem Singlecore tadellos funktioniert ist mir schleierhaft.