Einzelnen Beitrag anzeigen

C.Schoch

Registriert seit: 2. Jan 2006
Ort: Wüstenrot
235 Beiträge
 
Turbo Delphi für Win32
 
#20

Re: Probleme beim Warten auf 2 Threads

  Alt 11. Dez 2006, 01:28
Zitat von RWarnecke:
Ich habe es jetzt mal probiert, wenn ich den Wert von 100ms runtersetze auf 5. Dann geht es schneller.
Was meine Vermutung bekräftigt, dass du aus den Threads heraus auf die GUI zugreifst.

Zitat von RWarnecke:
Damit liegst Du richtig. Ich setze diesen Code in meinem Projekt CopyAndSync ein. Das auslesen der Dateien erfolgt aber nicht über FindFirst / FindNext, sondern über eine Unit aus dem Synchronisationstool Pegasus von Luckie.
Auch der benutzt Find First/Next

Zitat von RWarnecke:
Das mit der Variable oder Message verstehe ich da noch nicht ganz.
Ich übergebe dem Thread einen Pointer auf eine in meiner Hauptanwendung definierten String den ich dann einfach im Thread mit Meldungen fülle:
Delphi-Quellcode:
  // Im Hauptprog
  SearchForCopy := TSearchCopy.Create(false);
  SearchForCopy.FreeOnTerminate := False;
  SearchForCopy.Message := @MessageString;
Delphi-Quellcode:
  //im Thread
  Message^ := 'Kopiere Datei xyz';
Und setze dann diese Meldung alle 100ms in meine Anzeige:
if dwWaitResult <> WAIT_OBJECT_0 then
begin
Label1.Caption := MessageString;
Application.ProcessMessages; // GUI aktualisieren
end;
Frei getippt!

p.s.: Es scheint ein Problem mit meinem Code (vor allem mit dem fWaitAll) zu geben schau mal hier:msgWait... sollte aber nicht weiter schlimm sein.
Damit gehts.
dwWaitResult := WaitforMultipleObjects(length(ThreadArray), @ThreadArray, true, 100);
Tschau Christian
Das System hofft auf Besserung
[Siemens]
  Mit Zitat antworten Zitat