Einzelnen Beitrag anzeigen

Benutzerbild von thkerkmann
thkerkmann

Registriert seit: 7. Jan 2006
Ort: Pulheim Brauweiler
464 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Threadproblem auf einem "langsameren" Rechner

  Alt 21. Jan 2007, 17:24
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
Thomas Kerkmann
Ich hab noch einen Koffer in Borland.
http://thomaskerkmann.wordpress.com/
  Mit Zitat antworten Zitat