Hallo zusammen,
ich habe mir ein UserControll erstellt.
In diesem Controll starte ich einen Thread, welcher kontinuierlich irgendwelche arbeitet durchführt (Endlosschleife).
Wenn ich nun mein Windows-Formular, in welchem das Control sich befinden, schließe, dan beendet sich das Programm nicht komplett, da der Thread des Controls noch läuft.
Wie ich leider feststellen musste, besitzt das UserControl selbst kein Events OnClose oder OnClosing wie das Windows-Formular.
Eine möglichkeit wäre in dem UserControl eine Funktion einzubauen, welche von dem Windows-Formular bei Dispose oder OnClosing aufgerufen wird.
Somit muss ich aber immer daran denken, wenn ich dieses Control verwende...
Gibt es noch eine andere möglichkeit, dies Control-seitig automatisch zu lösen?
Danke im voraus.
Grüße
Matrix
No Risk, No Fun
Hallo Matrix-NTN,
trotz des laufenden Threads wird die Dispose-Methode des Controls aufgerufen. In dieser kannst du deinen laufenden Thread mitteilen, dass dieser abbrechen/sich beenden soll (z.B. mit einer boolschen Variablen).
Gruss
Friedel
Ohne Ziel ist auch der Weg egal.
Entweder du beendest den Thread manuell beim OnClosed der MainForm oder du beendest den Thread bei OnDispose() des UserControls. Wobei ich mir jetzt nicht sicher, ob das noch beim Beenden der Anwendung aufgerufen wird.
Falls nicht, kannst du noch auf das Application.ApplicationExit-Event reagieren.
> Codejunky <
Soweit so gut...
Von dem Control gibt es eine Datei namens Controlname.Designer.cs
In dieser gibt es eine Dispose Funktion von welcher ich meinen Thread stoppen kann...
Grüße
Matrix
No Risk, No Fun
Sorry, habe eure beiträge erst jetzt gelsene.
Danke für die Tips...
Habe die Datei mit der Dispose funktion schlicht und ergreifend übersehen.
No Risk, No Fun