Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Form nach Thread schließen (https://www.delphipraxis.net/155946-form-nach-thread-schliessen.html)

youuu 14. Nov 2010 16:06

Form nach Thread schließen
 
Ich führe einen TThread aus, sobald dieser abgearbeitet wurde, soll das aktuelle Form schließen.
Wenn ich das im Thread schreibe, erhalte ich logischerweise eine Zugriffsverletzung.

Wie kann ich das aber nun am elegantesten realisieren?

jfheins 14. Nov 2010 16:09

AW: Form nach Thread schließen
 
TThread hat ein OnTerminate Event (oder so) - das verknüpfst du mit einer Methode deines Formulars. Darin kannst du dann einfach Release() aufrufen.

youuu 14. Nov 2010 16:41

AW: Form nach Thread schließen
 
Das versteh ich nun noch nicht ganz.
Mit welcher Methode des Formulars soll ich das denn verknüpfen?
Und wieso Release?

DeddyH 14. Nov 2010 16:44

AW: Form nach Thread schließen
 
Formulare sollten mit Release freigegeben werden. Und die Methode musst Du halt schreiben und zuweisen.

Bummi 14. Nov 2010 16:46

AW: Form nach Thread schließen
 
Delphi-Quellcode:
Procedure TForm.MeineInfoWennThreadFertig(Sender:TObject);
begin
   Close;
end;
//....
//....
Mythread := TMYthread.Create;
MyThread.OnTerminate := MeineInfoWennThreadFertig;
//...

youuu 14. Nov 2010 16:53

AW: Form nach Thread schließen
 
Ok verstanden, danke.

youuu 15. Nov 2010 09:20

AW: Form nach Thread schließen
 
Ich hol den Thread nochmal hoch aus dem Grund, das mein OnTerminate nicht funktionieren will.

Delphi-Quellcode:
EmailSendThread.OnTerminate:= MailVersandt;
Rufe ich auf und erhlate die Meldung beim Compiler: E2009 Inkompatible Typen: 'Liste der Parameter ist unterschiedlich'


MailVersandt hat allerdings gar keine Parameter angegeben.

DeddyH 15. Nov 2010 09:22

AW: Form nach Thread schließen
 
Die zuzuweisende Methode muss ein TNotifyEvent sein, muss/darf also lediglich den Sender-Parameter aufweisen.

youuu 15. Nov 2010 09:40

AW: Form nach Thread schließen
 
Nochmal zum Verständnis

in private deklariert der Klasse:
Delphi-Quellcode:
procedure MailVersandt;
Thread wird so aufgerufen in der Klasse selbst:

Delphi-Quellcode:
     
EmailSendThread:= TEmailSendThread.Create(msg, smtp);
EmailSendThread.OnTerminate:= MailVersandt;
EmailSendThread.Start;

Was muss ich daran ändern?

DeddyH 15. Nov 2010 09:43

AW: Form nach Thread schließen
 
Delphi-Quellcode:
procedure Mailversandt(Sender: TObject);


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:31 Uhr.
Seite 1 von 2  1 2      

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