Thema: Delphi Thread nicht terminiert?

Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#11

AW: Thread nicht terminiert?

  Alt 1. Feb 2013, 12:59
Von hinten durch die Brust ins Auge:
Delphi-Quellcode:
procedure TMyThread.Execute;
var
   dynform : TFrmGMaps;
begin
  dynform := TFrmGMaps(Application.FindComponent(FrmMain.GmapThreadname));
  // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Der Thread braucht offensichtlich ein TFrmGMaps-Objekt für seine Arbeit.
Dann wäre es sehr sinnvoll, wenn man dem Thread dieses Objekt von Aussen geben würde.
Dadurch, dass der Thread sich diese Info selbst besorgen muss, entsteht ein Kuddelmuddel.
Der Thread braucht und soll die Objekte "Application" und "FrmMain" nicht kennen.
Delphi-Quellcode:
TMyThread = class(TThread)
public
   dynform : TFrmGMaps; // NEU <====
   procedure execute; override;
end;

procedure TFrmGMaps.btn_querystartClick(Sender: TObject);
...
begin
...
// und Erzeugen sieht dann so aus
  MThread := TMyThread.Create(True);
  MThread.FreeOnTerminate := True;
  MThread.OnTerminate := threadend;
  MThread.dynform := self; // <===

Geändert von sx2008 ( 1. Feb 2013 um 19:33 Uhr)
  Mit Zitat antworten Zitat