![]() |
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:
das form:
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
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 |
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.?
|
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.
|
AW: Neues Event in Form oder Kommunikations zwischen Thread und Form
Zitat:
|
AW: Neues Event in Form oder Kommunikations zwischen Thread und Form
Zitat:
genau das habe ich gesucht!! danke |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz