Ich habe einige Binärdaten, die ich als Bild speichern möchte. Wenn ich versuche, das Bild zu speichern, wird eine Ausnahme ausgelöst, wenn der zum Erstellen des Bildes verwendete Speicherstrom vor dem Speichern geschlossen wurde. Der Grund, warum ich das mache, ist, dass ich dynamisch Bilder erstelle und als solches .. Ich muss einen Speicherstrom verwenden.
Das ist der Code:
[TestMethod]
public void TestMethod1()
{
// Grab the binary data.
byte[] data = File.ReadAllBytes("Chick.jpg");
// Read in the data but do not close, before using the stream.
Stream originalBinaryDataStream = new MemoryStream(data);
Bitmap image = new Bitmap(originalBinaryDataStream);
image.Save(@"c:\test.jpg");
originalBinaryDataStream.Dispose();
// Now lets use a nice dispose, etc...
Bitmap2 image2;
using (Stream originalBinaryDataStream2 = new MemoryStream(data))
{
image2 = new Bitmap(originalBinaryDataStream2);
}
image2.Save(@"C:\temp\pewpew.jpg"); // This throws the GDI+ exception.
}
Hat jemand Vorschläge, wie ich ein Bild bei geschlossenem Stream speichern könnte? Ich kann mich nicht darauf verlassen, dass die Entwickler daran denken, den Stream nach dem Speichern des Bildes zu schließen. Tatsächlich hätte der Entwickler KEINE IDEE, dass das Bild unter Verwendung eines Speicherstroms erzeugt wurde (weil es in einem anderen Code an anderer Stelle vorkommt).
Ich bin wirklich verwirrt :(
using
Blocks. Ich denke das originalBinaryDataStream2
wurde am Ende der Nutzung automatisch entsorgt. Und das würde die Ausnahme werfen.