Anfänger sucht Ratschlag
-
Application.Exit() beendet nur alle Windows und Message-Loops.
Im Falle eines offenen StreamWriter erfolgt eine Exception.
Allein die Methode .Closing() wird noch erreicht.Guter Hinweis. Application.Exit() mit etwas Vorsicht einsetzen!
Das geht für die gestellte Frage eines Anfängers nun aber zu weit.
Meinung geändert: wie geschildert mit einer while-Schleife regeln.
-
berniebutt schrieb:
Application.Exit() beendet nur alle Windows und Message-Loops.
Im Falle eines offenen StreamWriter erfolgt eine Exception.
Allein die Methode .Closing() wird noch erreicht.Hätt ich auch nicht gewusst. Kann volkard etwa .NET?
-
berniebutt schrieb:
Application.Exit() beendet nur alle Windows und Message-Loops.
Im Falle eines offenen StreamWriter erfolgt eine Exception.
Allein die Methode .Closing() wird noch erreicht.Quatsch (der Teil mit der Exception).
-
Mechanics schrieb:
berniebutt schrieb:
Application.Exit() beendet nur alle Windows und Message-Loops.
Im Falle eines offenen StreamWriter erfolgt eine Exception.
Allein die Methode .Closing() wird noch erreicht.Hätt ich auch nicht gewusst. Kann volkard etwa .NET?
Da brauchst du keine Kenntnisse in .Net. Da reicht ein wenig nachdenken, woher
Application.Exit
eigentlich kommt. Nämlich von WinForms oder WPF. Das sind Bibliotheken komplett unabhängig von IO wie bei einem Stream. Der Stream meldet sich sicher nicht bei einer Application an oder umgekehrt. Das läuft völlig unabhängig. Zudem garantiert C# nirgendwo, dass ein Stream beim Beenden des Programmes automatisch geflusht wird. Sowas umzusetzen wäre auch etwas krank aufwendig bis unmöglich.Aber abgesehen davon,
Application.Exit
macht, glaube ich, etwas anderes, als gewisse hier denken. Lest mal selber nach:
http://msdn.microsoft.com/en-us/library/ms157894.aspxIn WPF hat man das sinnvollerweise in
Application.Shutdown
umbenannt:
http://msdn.microsoft.com/en-us/library/ms597013.aspxMeint ihr womöglich
Environment.Exit
?
http://msdn.microsoft.com/en-us/library/system.environment.exit.aspxAber nach wie vor gilt: Nicht zu empfehlen.
Das mit der Exception beim
StreamWriter
ist tatsächlich Quatsch. Wie kommst du auf die Idee berniebutt? Wenn schon kommt es ja sowieso darauf an, worauf derStreamWriter
schreibt. Also würde es um denBaseStream
gehen. Wenn das zum Beispiel einMemoryStream
ist, dann fliegt da sicherlich keine Exception.
-
Dravere schrieb:
Da brauchst du keine Kenntnisse in .Net. Da reicht ein wenig nachdenken, woher
Application.Exit
eigentlich kommt.Darauf wollte ich nicht hinaus. Ich wollte darauf hinaus, dass ich nicht erwartet hätte, dass volkard überhaupt irgendwas mit .NET am Hut hat.
-
Dravere schrieb:
Das mit der Exception beim
StreamWriter
ist tatsächlich Quatsch. Wie kommst du auf die Idee berniebutt? Wenn schon kommt es ja sowieso darauf an, worauf derStreamWriter
schreibt. Also würde es um denBaseStream
gehen. Wenn das zum Beispiel einMemoryStream
ist, dann fliegt da sicherlich keine Exception.Es sollte überhaupt keine Exception fliegen, egal um was für einen Stream es sich handelt, da bei
Application.Exit
eben nichts geflusht wird. (Was natürlich auch ein Problem ist, wenn man möchte dass derStreamWriter
/Stream
geflusht wird.)Und das was passiert, nämlich dass die
CriticalFinalizerObject
s finalisiert werden, wirft normalerweise auch keine Exceptions, da es Usus ist den Finalizer einesCriticalFinalizerObject
(bzw. eigentlich eines jeden Objekts) so zu implementieren dass er keine Exceptions wirft.
(Bzw. wäre es sowieso egal, da die Exception dann vermutlich an einer Stelle geworfen wird wo sie einfach gefangen und ignoriert wird.)
-
hustbaer schrieb:
Dravere schrieb:
Das mit der Exception beim
StreamWriter
ist tatsächlich Quatsch. Wie kommst du auf die Idee berniebutt? Wenn schon kommt es ja sowieso darauf an, worauf derStreamWriter
schreibt. Also würde es um denBaseStream
gehen. Wenn das zum Beispiel einMemoryStream
ist, dann fliegt da sicherlich keine Exception.Es sollte überhaupt keine Exception fliegen, egal um was für einen Stream es sich handelt, da bei
Application.Exit
eben nichts geflusht wird. (Was natürlich auch ein Problem ist, wenn man möchte dass derStreamWriter
/Stream
geflusht wird.)Hmmm, ok. Ich bin mir jetzt unsicher darüber, was berniebutt hier genau gemeint hat. Aber womöglich habe ich bereits zu weit gedacht, wenn ich mir die Aussage nochmals durchlese. Wenn er meint, dass
Application.Exit
eine Exception wirft, falls noch einStreamWriter
offen ist, dann ist das natürlich kompletter Unsinn.
-
Ich bin auch nicht 100% sicher was er gemeint hat - ich würde nur sagen das ist das was er geschrieben hat.
-
Mechanics schrieb:
Darauf wollte ich nicht hinaus. Ich wollte darauf hinaus, dass ich nicht erwartet hätte, dass volkard überhaupt irgendwas mit .NET am Hut hat.
Kinners, ich bin über .NET hinaus, weil damit Projekte nicht skalieren. Ich hab's ernsthaft versucht. Es geht einfach nicht.
-
Mechanics schrieb:
berniebutt schrieb:
Application.Exit() beendet nur alle Windows und Message-Loops.
Im Falle eines offenen StreamWriter erfolgt eine Exception.
Allein die Methode .Closing() wird noch erreicht.Hätt ich auch nicht gewusst. Kann volkard etwa .NET?
Lerne noch mehr bitte: Der CD-Schacht wird geschlossen und in München gibt es einen Stromausfall, wenn man das macht. Sorry, auf berniebutts Vermutung hatte ich nicht geantwortet, weil sie zu absurd/trollig war. Die Nichtantwort war keine Bekräftigung seiner These.
-
volkard schrieb:
weil damit Projekte nicht skalieren
WTF?