Laden...

Application.Exit() -> Applikation wird nicht immer beendet!

Erstellt von maik vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.066 Views
M
maik Themenstarter:in
170 Beiträge seit 2005
vor 17 Jahren
Application.Exit() -> Applikation wird nicht immer beendet!

Hi alle zusammen!

Ich hab ein sehr seltsames Problem mit der statischen Methode Exit() aus der Application Klasse! (Namespace: System.Windows.Forms)

Und zwar gibt es eine Klasse in meinem Programm welche die Initialisierung vornimmt, wie beispielsweise die Config laden etc...
Diese Klasse beinhaltet eine Methode welche Application.Exit() ausführt.

So, jetzt zum eigentlichen Problem:
===============================
Ich habe einige Formen in meiner Applikation die auf das Application.Exit() auch geschlossen werden. Nur wenn ich eine bestimmte Form aufrufe, welche eine Klasse initialisiert, die 2-3 Socketverbindungen und 1 COM Port Verbindung öffnet.

Diese werden aber beim schließen dieser Form wieder beendet.

Jetzt ist meine Frage: An was könnte es liegen, dass sich die Applikation nicht beenden lässt? Ich hab auch schon eingestellt dass alle Exceptions ausgegeben werden und das Studio unterbrechen soll. NIX!

Hängt eventuell ein THREAD? Bzw. wie kann ich das festellen oder ihn sicher beenden?

Vielen Dank!

Gruß
Maik

6.862 Beiträge seit 2003
vor 17 Jahren

Original von maik
Hängt eventuell ein THREAD? Bzw. wie kann ich das festellen oder ihn sicher beenden?

Kann natürlich gut sein. Threads sollten sich aber immer selber beenden. Von außen kann man die kaum zuverlässig killen. Selbst nen Thread.Abort() fragt bloß höflich nach ob der Thread nicht mal Lust hat bei Gelegenheit aufzuhören, dass er wirklich beendet wird ist nicht garantiert.

Baka wa shinanakya naoranai.

Mein XING Profil.

M
maik Themenstarter:in
170 Beiträge seit 2005
vor 17 Jahren

hm... ok!
das heißt dann konkret? hab ich jetzt einfach pech, oder was könnte ich noch machen? 😉

M
maik Themenstarter:in
170 Beiträge seit 2005
vor 17 Jahren

HA! ich habs!
der COM port war aus irgend einem Grund noch geöffnet und da dies eine externe DLL ist, muss ich da den THREAD vermutlich erst schließen!

arrr.... seXy! 🙂
danke für die hilfe, anyway!

cheers

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo maik,

ich denke auch, dass es an dem Thread liegt. Der Vollständigkeit halber aber noch die Doku:

Application.Exit-Methode
Die Exit-Methode beendet alle aktiven Meldungsschleifen aller Threads und schließt alle Fenster der Anwendung. Diese Methode zwingt die Anwendung nicht notwendigerweise zum Beenden.

herbivore

4.221 Beiträge seit 2005
vor 17 Jahren

Ergänzung zu herbivore's Post:

Mit Environment.Exit kann man den Process per Holzhammer beenden... der Process macht dann einfach den Schirm zu und reisst alles was noch rumkreucht herunter ....

Aber ich fahre meine Anwendungen lieber sauber runter ... daher verzichte ich normalerweise sowohl auf Application.Exit wie auch auf Environment.Exit.

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

T
147 Beiträge seit 2005
vor 17 Jahren

Es kommt immer darauf an wie die Anwendung aufgebaut ist...

Wenn meine Anwendung Multithreaded ist und ich nicht auf alle Threads einen Handle habe, ich aber sicher gehen will, dass nicht das Windows "sofort" beenden Fenster kommt... schließe ich die Anwendung mittles

System.Environment.Exit(0);

Das macht allerdings nur sinn, wenn alle geöffneten Dateien geschlossen sind.. nicht dass noch irgendwelche Properties oder Daten verloren gehen

Ansonsten beende ich meine Anwendungen auch von hand...