Hallo,
ich weiß nicht ob dich das Weiter bringt, oder ob das Performanter ist, aber es ist zumindest mehr OnDemand was das Application.ProcessMessages angeht
Also:
1. Funktion MyIntToStr erzeugt Threads.
2. Es wird in einem Array die gleiche Anzahl an TEvents erzeugt.
3. Thread hat z.B. ein TEvent property. Zuweisung mit den TEventArray.
4. Jeder Thread löst das TEvent aus am ende von seiner Execute-Methode.
5. Funktion MyIntToStr erzeugt sich ein HandleArray aller Events
6. Warten auf das Ende mittels:
Delphi-Quellcode:
doneCount := 0;
doneMax := length(TheHandleArr);
repeat
Erg := MsgWaitForMultipleObjects(doneMax, @TheHandleArr[0], FALSE, INFINITE, QS_ALLINPUT);
if (Erg < WAIT_OBJECT_0) or (Erg > WAIT_OBJECT_0 + doneMax -1) then
begin
Application.ProcessMessages;
if Application.Terminated then Exit;
end else
begin
inc(doneCount);
end;
until doneCount = doneMax
Man könnte hier auch noch zusätzlich ein Abbruch Event hinein bringen. Aber das überlasse ich anderen
Vielleicht hilft es ja.
Greez, Chris