Einzelnen Beitrag anzeigen

Benutzerbild von Dalai
Dalai
Online

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#1

Anfängerfragen zu Threads (TThread)

  Alt 3. Nov 2017, 21:21
Hallo *.*,

um die Reaktionsfähigkeit eines meiner Programme zu verbessern, denke ich gerade darüber nach, Threads zu verwenden, um bestimmte Funktionen von diesem ausführen zu lassen. Die Situation stellt sich folgendermaßen dar:
Delphi-Quellcode:
type
  TfmMain = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    FObject : TComplexClass;
  end;

implementation

procedure TfmMain.FormCreate(Sender: TObject);
begin
    FObject:= TComplexClass.Create(ip);
    if FObject.Ping then begin
    [...]
    end;
end;
Die Ausführung von FObject.Ping kann aufgrund von mir nicht beeinflussbaren Faktoren sehr lange dauern (bei Nichterreichbarkeit der IP durchaus 20 Sekunden). Daher kam mir die Idee, diese Methode in einem Thread auszuführen. Da ich bisher noch nie mit Threads zu tun hatte, habe ich mich natürlich etwas angelesen, neben der Delphi-Hilfe unter anderem das Threads-Tut im Delphi-Treff und auch bei Wikibooks. Einige meiner Fragen wurden durch die Lektüre durchaus beantwortet. Meine Idee ist nun, eine Klasse TPingThread von TThread abzuleiten, und in dessen Execute-Methode irgendwie den Ping auszuführen und dessen Rückgabewert zu speichern. Wenn der Thread fertig ist, will ich im OnTerminate darauf reagieren, je nach Rückgabewert von Ping.

Aber ein paar wichtige Sachen sind mir noch unklar:
  • Wie übergebe ich an TPingThread.Create/Execute die Methode Ping? Ich würde ungern das komplette Objekt FObject übergeben. Oder wäre das der richtige Weg?
  • Wer setzt ReturnValue? Passiert das bereits in TThread oder müsste ich das in meiner Ableitung TPingThread tun?
  • Spricht etwas dagegen, in der Ereignisbehandlung OnTerminate direkt ReturnValue auszuwerten? Ich sehe keinen Sinn darin, WaitFor zu benutzen, denn zu diesem Zeitpunkt hat der Thread ja seine Arbeit bereits erledigt.

Auch diesmal hoffe auf Aufklärung mittels der hier vertretenen Expertise .

Grüße
Dalai
  Mit Zitat antworten Zitat