Saya punya beberapa data biner yang ingin saya simpan sebagai gambar. Ketika saya mencoba untuk menyimpan gambar, itu melontarkan pengecualian jika aliran memori yang digunakan untuk membuat gambar, ditutup sebelum penyimpanan. Alasan saya melakukan ini adalah karena saya secara dinamis membuat gambar dan karenanya .. saya perlu menggunakan aliran memori.
ini kodenya:
[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.
}
Adakah yang punya saran tentang bagaimana saya bisa menyimpan gambar dengan aliran ditutup? Saya tidak dapat mengandalkan pengembang untuk mengingat untuk menutup aliran setelah gambar disimpan. Faktanya, pengembang TIDAK ADA IDEA bahwa gambar dibuat menggunakan aliran memori (karena ini terjadi di beberapa kode lain, di tempat lain).
Saya benar-benar bingung :(
using
blok. Saya pikir originalBinaryDataStream2
secara otomatis dibuang pada akhir penggunaan. Dan itu akan membuang pengecualian.