Einzelnen Beitrag anzeigen

Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#1

Threadproblem auf einem "langsameren" Rechner

  Alt 21. Jan 2007, 10:53
Hallo zusammen,

ich habe folgendes Problem, ich rufeso meine zwei Thread aus dem Haupttread auf :
Delphi-Quellcode:
      try
        SearchForDelete := TSearchDelete.Create(false);
        SearchForDelete.FreeOnTerminate := False;
        SearchForCopy := TSearchCopy.Create(false);
        SearchForCopy.FreeOnTerminate := False;
        ThreadArray[0] := SearchForCopy.Handle; // Handle Array füllen
        ThreadArray[1] := SearchForDelete.Handle;
        repeat
          // Auf Threads warten
          dwWaitResult := msgWaitforMultipleObjects(length(ThreadArray), ThreadArray, true, 10, QS_ALLINPUT);
          if dwWaitResult <> WAIT_OBJECT_0 then
          begin
            Application.ProcessMessages; // GUI aktualisieren
            PeekMessage(msg, Application.Handle, 0, 0, PM_REMOVE);
            PeekMessage(msg, SearchForCopy.Handle, 0, 0, PM_REMOVE);
            PeekMessage(msg, SearchForDelete.Handle, 0, 0, PM_REMOVE);
          end;
          if CancelSync then
          begin
            TerminateThread(ThreadArray[0], 0);
            TerminateThread(ThreadArray[1], 0);
            dwWaitResult := WAIT_OBJECT_0;
          end;
        until dwWaitResult = WAIT_OBJECT_0; // keinen Threads mehr zum warten
      finally
        SearchForCopy.Free;
        SearchForDelete.Free;
      end;
Die beiden Threads machen nichts anderes als Verzeichnisse zu vergleichen und mir die aktuellen Dateien, die gerade verglichen werden in einem Fenster anzuzeigen. Nach dem finally, wird das Fenster geschlossen und dann die Ergebnisliste angezeigt. Wenn ich diesen Aufruf auf meinem AMD Athlon 64 3200+ aufrufe, funktioniert alles wunderbar. Wenn ich jetzt das gleiche Programm auf meinem IBM Thinkpad 1GHz aufrufe, muss ich immer erst die Maus über das Fenster bewegen, dass das Programm die Ergebnisliste anzeigt.

Weiß jemand rat, warum das so ist ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat