Programm schliessen
-
Hallo.
Ich habe zu meinem Programm einen Thread laufen, der eine bestimmte Hardware überwacht.
Wenn diese entfernt wird, möchte ich mein Programm selbstständig beenden.
Bis auf das schliessen des Hauptprogrammes funktioniert auch alles. Wie kann ich jedoch mein Programm aus einem Thread heraus schließen, ohne eine Exception zu erlangen.Gruß
Oli_1977
-
Der Thread kann ein Event feuern, sobald die Hardware entfernt wurde und sich danach direkt selbst beenden. Der Hauptthread lauscht an diesem Event und beendet die Anwendung dann sauber.
-
Hast Dun dafür ein Beispiel?
-
public partial class Form1 : Form { HardwareThread hardware = new HardwareThread(); public Form1() { InitializeComponent(); hardware.Disconnect += new EventHandler(hardware_Disconnect); hardware.Run(); } void hardware_Disconnect(object sender, EventArgs e) { this.Invoke(new Action(() => Close())); } } class HardwareThread { Thread thread; public event EventHandler Disconnect; public void Run() { if (thread != null) throw new Exception(); thread = new Thread((o) => Worker()); thread.Start(); } private void Worker() { //Hardware in einer Schleife abfragen oder was auch immer du //sonst damit machen willst Thread.Sleep(3000); if (Disconnect != null) Disconnect(this, EventArgs.Empty); } }
-
Gleiches macht der BackgroundWorker.
-
Danke, werde ich gleich mal probieren.
Gruß
Oli_1977