Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Neues Event in Form oder Kommunikations zwischen Thread und Form (https://www.delphipraxis.net/184524-neues-event-form-oder-kommunikations-zwischen-thread-und-form.html)

danieldelphi 1. Apr 2015 14:19

Neues Event in Form oder Kommunikations zwischen Thread und Form
 
Hallo zusammen,

ich habe folgendes Problem, ich habe eine Form, in der ich einen Thread starte, jetzt will ich am ende wissen ob der thread seine arbeit beendet hat und wenn ja will ich darauf reagieren, genauer gesagt einen neuen start des threads ermöglichen.
Etwas allgemeiner beschrieben kann man sagen ich habe eine Form die einen thread in einer anderen unit startet und dann am ende wieder mit der form kommunizieren soll, wie geht man dabei am besten vor? Kann ich auf den eventhandler des forms zugreifen und ein neues event starten? das problem dabei ist, dass ich dafür den thread iwie mit dem form kommunizieren lassen muss oder? denn beide unints in die uses klasse der anderen schreiben geht ja nicht.

Hier ei bisschen code des problems.

Delphi-Quellcode:
unit sterb;

interface

uses Windows, Messages, SysUtils, Classes, Controls, Forms, Dialogs,
  StdCtrls;

type
  TMyThread = class(TThread)
  procedure Execute; override;
end;

procedure sterb_schleife;



implementation

procedure TMyThread.Execute;
begin
  sterb_schleife();
end;


usw...

end
das form:
Delphi-Quellcode:

unit Checkdata;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, deklara, sterb, Grids, DirOutln, ShellAPI, ShlObj, registry,
  struktur, CheckLst, ExtCtrls;



type
  TForm2 = class(TForm)
    StartButton: TButton;
    Inputedit: TEdit;
    Outputedit: TEdit;
    Formatbox: TComboBox;
    Meldbox: TComboBox;
    Outputbtn: TButton;
    Inputbtn: TButton;
    dlgmanagerpath: TOpenDialog;
    Memo1: TMemo;
    countmemo: TMemo;
    reportbutton: TButton;
    reportedit: TEdit;
    Savereport: TSaveDialog;
    Label1: TLabel;
    Label2: TLabel;
    Helpbtn: TButton;
    Cancelbtn: TButton;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    CheckBox1: TCheckBox;
    procedure OutputbtnClick(Sender: TObject);
    procedure StartButtonClick(Sender: TObject);
    procedure MeldboxChange(Sender: TObject);
    procedure FormatboxChange(Sender: TObject);
    procedure InputbtnClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure reportButtonClick(Sender: TObject);
    procedure sep_rep();
    procedure sep_plau();
    procedure HelpbtnClick(Sender: TObject);
    procedure CancelbtnClick(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
  end;

function BrowseDialog(const Title: string; const Flag: integer): string;
var
  Form2: TForm2;
implementation

{$R *.dfm}

[...]


procedure TForm2.StartButtonClick(Sender: TObject);
var
  fehler:string;
begin
  meldung := memo1.lines;
  dsnr :=countmemo.lines;
  if checkstart(fehler) then begin
    meldung.add('Durchlauf gestartet');
    sterbthread := sterb.TMyThread.Create(False);
    Cancelbtn.Enabled:=true;
    StartButton.Enabled:=false;
  end
  else
    ShowMessage(fehler);
end;

[..]
end

danieldelphi 1. Apr 2015 14:46

AW: Neues Event in Form oder Kommunikations zwischen Thread und Form
 
bzw. wie kann ich die klasse die den thread startet auf das ende des threads reagieren lassen.?

Uwe Raabe 1. Apr 2015 15:01

AW: Neues Event in Form oder Kommunikations zwischen Thread und Form
 
Warum nimmst du nicht den OnTerminate-Event des Threads? Der wird netterweise gleich im VCL-Thread ausgeführt.

danieldelphi 1. Apr 2015 15:24

AW: Neues Event in Form oder Kommunikations zwischen Thread und Form
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1295815)
Warum nimmst du nicht den OnTerminate-Event des Threads? Der wird netterweise gleich im VCL-Thread ausgeführt.

Damit komme ich nicht an die übergeornete Klasse, oder?

danieldelphi 1. Apr 2015 15:34

AW: Neues Event in Form oder Kommunikations zwischen Thread und Form
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1295815)
Warum nimmst du nicht den OnTerminate-Event des Threads? Der wird netterweise gleich im VCL-Thread ausgeführt.

vergiss was ich gesagt habe,

genau das habe ich gesucht!!

danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:24 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