Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Alzaimar's Workerthread und Stringübergabe ? (https://www.delphipraxis.net/100347-alzaimars-workerthread-und-stringuebergabe.html)

th_bone 26. Sep 2007 19:32


Alzaimar's Workerthread und Stringübergabe ?
 
Hi,

ich habe eine Frage zu "Alzaimar's Workerthread - Diener im Hintergrund"

Workerthread

interessanter code... aber was sich mir in dem Zusammenhang nicht erschließt ist, wie ich richtig einen job erstelle
und dabei einen string an den job übergebe...

Bei der Datenübergabe und threads habe ich immer ein wenig Bauchschmerzen.

Danke für die Tips

Ralf

ich habe das jetzt mal so gelöst - aber ist das wirklich eine gute Lösung ?

Delphi-Quellcode:
Type
  TAddDataJob = Class(TWorkerThreadJob)
    fDataStr: String;
    Procedure AddData;
  protected
    Constructor Create;
    Procedure Execute(aThread: TWorkerThread); override;
  End;

//******

Procedure TAddDataJob.Execute(aThread: TWorkerThread);
Begin
  Inherited;
  fDataStr := UDPstr;
  Sleep(10);
  AddData;
  //aThread.Synchronize(DoShow);
End;

//******

  UDPstr := StrPas(Buffer);
  // Schicke UDPstring in die Warteschleife
  PendingJobs.AddJob(TAddDataJob.Create);

alzaimar 26. Sep 2007 20:15

Re: Alzaimar's Workerthread und Stringübergabe ?
 
Ahoi,

Übergebe den String einfach im Konstruktor, so etwa:
Delphi-Quellcode:
Type
  TMyJob = Class(TWorkerThreadJob)
    fDataStr: String;
    Procedure AddData;
  protected
    Constructor Create (Const aDataStr : String);
    Procedure Execute(aThread: TWorkerThread); override;
  End;

Constructor TMyJob.Create (Const aDataStr : String);
Begin
  Inherited;
  fDataStr := aDataStr;
  ...
End;
...

PendingJobs.AddJob (TMyJob.Create('Foobar'));


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz