Einzelnen Beitrag anzeigen

Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#5

Re: scheitere bei TThread schon am Anfang

  Alt 26. Aug 2003, 11:30
Zitat von iaby:
ich dachte allerdings, dass die execute prozedur schon beim erstellen des objekts per create ausgeführt wird. nach langem probieren habe ich dann herausgefunden, dass es mit Thread.resume geht! woran liegt das?
Der Paremeter "CreateSuspended" des Constructors gibt an, ob der Thread sofort mit seiner Ausführung beginnen soll, oder ob er gleich am Anfang "suspendiert" (also angehalten) werden soll. Ist CreateSuspended True, so wird der Thread angehalten und du musst ihn manuell per Resume wieder fortsetzen. Das ist dann sinnvoll, wenn du nach dem Erzeugen des Threads noch ein paar Initialisierungen o.ä. durchführen musst.

Zitat:
Thread.free brauche ich ja nicht zu machen( wie ich das bei luckie's tutorial gelesen hab)!?!
Sofern du FreeOnTerminate auf True setzt nicht...

Edit: @Luckie: hab mir dein Demo auch mal angeschaut.. was mir aufgefallen ist:
Delphi-Quellcode:
  private
    { Private-Deklarationen }
    // Demio-Zähler
    FCount: Integer;
    // globale Variablen zum Synchronisieren
    XIndex: Integer;
    XCount: Integer;


{...}
UpdateValues(Loop, FCount);
{...}


procedure TMyThreads.UpDateValues(Index, Count: Integer);
begin
  // globale Variable zuweise, da der Synchronize Methode keine Variablen
  // übetgeben werden können.
  XIndex := FIndex;
  XCount := FCount - 1;
  // Synchronize Methode aufrufen
  Synchronize(UpDateLVCaption);
end;

procedure TMyThreads.UpDateLVCaption;
begin
  // Synchronize Methode mit globalen Variablen
  Form1.UpdateLVCaption(XIndex, XCount);
end;
1) Wozu übergibst du der Methode UpdateValues zwei Parameter wenn diese innerhalb der Methode überhaupt nicht verwendet werden?
2) Wozu führst du die beiden privaten Felder XIndex und XCount ein wenn du stattdessen genausogut FIndex und FCount für UpdateLVCaption verwenden könntest?
Edit2: 3) Wozu rufst du die Methode UpdateValues per Synchronize auf?
Manuel Pöter
  Mit Zitat antworten Zitat