Hi,
Zitat von
C.Schoch:
Hi,
Nicht verzweifeln!
Das Problem hatte auch schon nur mit DualCore Rechnern.
Ich habs jetzt so laufen, funktioniert Tip Top
Delphi-Quellcode:
var
ThreadArray : array[0..3] of THandle;
dwWaitResult := WaitforMultipleObjects(length(ThreadArray), @ThreadArray, true, 100);
Mir wurde gesagt, das Windows erst wenn alle Threads beendet sind
und eine Message ansteht WAIT_OBJECT_0 zurückgibt. komischerweise gings bei mir anfänglich auch problemlos.
Edit: Hatte damals einen Thread aufgemacht
Hier
Was ist das? Experimentelle Datenverarbeitung?
Es gibt 2 Threads, also sollte wohl die Länge des ThreadArray und damit der Count für msgWaitForMultipleObjects auf 2 sein. Oder hab ich was übersehen?
Ich denke das Problem ist
msgWait... weil es müssen die zwei Threads zuende gelaufen sein UND ein Ereignis in der MessageQueue sein (QS_ALL_INPUT). Das heist, das passiert wohl mit der Maus. Das es auf dem einen Rechner mal läuft ist wohl eher ein Zufall (vielleicht gegen die Maus gestubst ?).
Der Ansatz mit WaitForMultipleObjects wäre wohl besser, mit einem kurzen Timeout (10 msec war schon nicht schlecht) und dann einfach ein Applicaction.ProcessMessages. Die beiden PeekMessage verstehe ich nicht, wozu sollen die dienen? Die nehmen doch wieder nur Messages aus der Queue, die dir dann fehlen. Oder hab ich auch hier was übersehen ?
Gruss