Muss ich eine .Net MemoryStream Objektinstanz explizit nach der Verwendung schließen? Oder keine Notwendigkeit, es zu schließen? Welches sind die besten Praktiken?.Net MemoryStream schließen Problem
Ich verwende VSTS2008 + .Net 3.5 + C#.
Muss ich eine .Net MemoryStream Objektinstanz explizit nach der Verwendung schließen? Oder keine Notwendigkeit, es zu schließen? Welches sind die besten Praktiken?.Net MemoryStream schließen Problem
Ich verwende VSTS2008 + .Net 3.5 + C#.
sollten Sie es schließen, wenn Sie damit fertig sind. Die beste Vorgehensweise besteht darin, den Stream im finally-Abschnitt eines try-catch-finally-Blocks zu schließen. Sie können hier weitere Informationen erhalten:
http://msdn.microsoft.com/en-us/library/system.io.memorystream.aspx
Noch besser wäre es würde Using
using (MemoryStream ms = /*get it using your favorite ctor*/)
{
// use it here
// and now flush and copy to a file stream (for example)
ws.Flush();
byte[] buffer = ws.ToArray();
using (Stream stream = new FileStream("fileName", FileMode.Create))
stream.Write(buffer, 0, buffer.Length);
}
eine kleine Erinnerung verwenden - wenn Sie planen, alles in einen anderen Strom am Ende, don‘zu schreiben t vergessen Sie zu Flush()
(Und lassen Sie den Toilettensitz nicht oben).
Ich benutze einen StreamWriter um die ms, um Textdaten in den Speicher zu schreiben, und am Ende alles auf CD in einem Rutsch. (Ich kann das Beispiel hier auch zu diesem Fall ändern, wenn Sie möchten)
"schreibe alles am Ende in einen anderen Stream" - kannst du mir bitte eine Probe zeigen? Was meinst du "in einen anderen Stream am Ende"? – George2
Warum für einen Speicherstream spülen? Der Kommentar zu dieser Methode lautet: "Überschreibt Flush, sodass keine Aktion ausgeführt wird." –
Ich denke, ich habe den Code aus meiner Verwendung eines 'MemoryStream' um einen' StreamWriter' kopiert und ich habe die 'StreamWriter' - Instanz gelöscht, um sicherzustellen, dass der gesamte geschriebene Text "innerhalb" des 'MemoryStream' liegt Array. Ich erinnere mich, nicht zuerst zu löschen, und habe Dateien, die nicht alle erwarteten Daten enthalten. –
Sehr gute Antwort! Vielen Dank! – George2