Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

AW: Taktik bei Laden von Business-Objekten in Threads

  Alt 18. Jun 2010, 17:40
Also ich würde alle nötigen Objekte, die die Thread-Klasse braucht im Hauptthread erzeugen. (Stichwort: Dependency Injection)
Die Objekte haben also zunächst mal keinen Inhalt.

Damit hat man die Freiheit, die Objekte im Hauptthread oder im Thread selbst zu laden.

Dann muss man sich darüber klar werden wem die Objekte gehören; also wer der "Owner" ist.
Mal angenommen, eine Thread-Klasse benötigt ein Artikel-Objekt und eine Datenbank-Connection.
Die Datenbank-Connection ist sicher ein sehr langlebiges Objekt; es wird also dem Thread nur einfach so mitgegeben.
Das Artikel-Objekt dagegen wird kurzfristig im Hauptthread erzeugt und dem Thread übergeben.
Damit geht auch die Verantwortung das Artikel-Objekt freizugeben an das Thread-Objekt über.
Delphi-Quellcode:
procedure TMainForm.StartNewArtikelThread(artikelnummer:string);
var
  meinThread : TMeinThread;
  artikel : TArtikel;
begin
  artikel := TArtikel.create;
  artikel.ArtikelID := artikelnummer;
  // hier könnte man das Objekt laden oder man überlässt das dem Thread
  // artikel.LoadFromDataSet(QryArtikel);

  meinThread := TMeinThread.Create(True);
  meinThread.DBConnection := DataModuleMain.DBConnection;
  meinThread.Artikel := artikel; // meinThread muss Artikel freigeben
  meinThread.Logger := FFileLogger;
  meinThread.Resume;
end;
Andreas
  Mit Zitat antworten Zitat