Was ist mit deinem Code falsch? Wenn eine Ausnahme auftritt, bevor Sie den Stream schließen, bleibt der Stream geöffnet und Systemressourcen werden nicht freigegeben:
%Vor% Sie müssen also sicher sein, dass der Stream geschlossen wird. Dies könnte durch try...finally
block:
Aber StreamWriter implementiert IDisposable -Schnittstelle, so dass Sie den C # -Compiler durch Wrapping automatisch für Sie erledigen lassen können Writer-Verwendung in using
block:
Dieser Code wird wie folgt kompiliert:
%Vor% Der einzige Unterschied zwischen der manuellen Implementierung ist der Null-Check und die Methode Dispose
wird anstelle von Close
aufgerufen. Aber tatsächlich, wenn Sie Close()
oder Dispose()
aufrufen, wird der gleiche Code ausgeführt:
Sie können mehr über Methodenimplementierung bereitstellen lesen.
Sie sollten wahrscheinlich eine using-Anweisung verwenden:
%Vor%Am Ende des using-Blocks wird der StreamWriter.Dispose aufgerufen, ob eine Ausnahme aufgetreten ist oder der Code erfolgreich ausgeführt wurde.
Sie möchten Folgendes verwenden:
%Vor% Sie brauchen nicht das Close
.
Wickeln Sie es in einen using
-Block
Stellen Sie sicher, dass Ihre Benennung gut ist, also sollte streamFolder
wahrscheinlich ein fName
sein. Sie können diesen Code auch in try-catch-finally setzen, wenn Sie das Gefühl haben, dass Sie einige IO (oder andere) Ausnahmen behandeln können:
System.IO.StreamWriter ist ein System.IDisposable
Sie müssen es entsorgen. Und warum schließt du etwas, das du nicht öffnest?
Tags und Links c# streamwriter