
Zitat von
C.Schoch:
@Basilikum: fWaitAll ist gewollt, da ich ja auf alle Threads warten möchte in ThreadArray warten möchte. falls immer WAIT_OBJECT_0 beim letzten also 4. Thread zurückgegeben wird ist dieser Flag natürlich hinfällig.
ThreadArray ist so Deklariert:
ThreadArray : array of THandle;
diese Frage hat sich erübrigt - ich habe soeben mit Schrecken festgestellt, dass der Compiler für
WaitforMultipleObjects(...,@ThreadArray,...)
und
WaitforMultipleObjects(...,@ThreadArray[0],...)
den exakt selben Assembler-Code erzeugt (die 1. Variante müsste ja eigentlich einen Pointer auf einen Pointer (dyn. Array ist eigentlich ein Pointer) auf die Handles übergeben - macht sie aber nicht)

Zitat von
C.Schoch:
If fWaitAll is FALSE, the return value minus WAIT_OBJECT_0 indicates the pHandles array index of the object that satisfied the wait.
Das heist IMO, dass ich immer den Index des Threads, der gerade Zurückgekehrt ist im
Handle Array erhalte und das Nützt mir nichts.
Ich hätte halt gerne
msgWaitforMultipleObjects um bei jeder Message die
GUI zu Aktualisieren. das scheint aber Laut Basilikums Erklärung nicht zu funktionieren
ich fürchte, du wirst nicht vermeiden können, fWaitAll auf false zu setzen und nach jeder Terminierung eines Thread dessen
Handle aus dem Thread-Array zu streichen, bis Length(ThreadArray) = 0
bei Result WAIT_OBJECT_0 + Length(ThreadArray) weisst du, dass "nur" eine Nachricht zu bearbeiten ist....