Einzelnen Beitrag anzeigen

Benutzerbild von RWarnecke
RWarnecke

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

Re: Threadproblem auf einem "langsameren" Rechner

  Alt 24. Jan 2007, 20:59
Hallo zusammen,

erstmal ein dickes Danke an Euch. Ich habe den Teil des Codes jetzt so geändert :
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 := WaitforMultipleObjects(length(ThreadArray), @ThreadArray, true, 10);
          if dwWaitResult <> WAIT_OBJECT_0 then
          begin
            Application.ProcessMessages; // GUI aktualisieren
          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;
Dieses funktioniert seeeehr gut. Ich habe nur noch ein kleines Problem mit den Labels, die während der Ausführung von den beiden Threads auf dem langsamen Rechner nicht funktioniert. Auf schnelleren Rechnern habe ich das Problem nicht. Ich habe mich mal durch ein paar Tutorials gelesen. Da habe ich den Begriff 'Synchronisieren' aufgegriffen. Wie funktioniert das mit dem Synchronisieren und muss ich das in diesem Teil des Codes einsetzen oder als extra Procedure in der Klasse TThread ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat