tôi có một số dữ liệu nhị phân mà tôi muốn lưu dưới dạng hình ảnh. Khi tôi cố gắng lưu hình ảnh, nó ném ra một ngoại lệ nếu luồng bộ nhớ được sử dụng để tạo hình ảnh, đã bị đóng trước khi lưu. Lý do tôi làm điều này là vì tôi đang tạo hình ảnh động và như vậy .. tôi cần sử dụng luồng bộ nhớ.
đây là mã:
[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.
}
Có ai có bất kỳ đề xuất nào về cách tôi có thể lưu hình ảnh khi luồng bị đóng không? Tôi không thể dựa vào các nhà phát triển để nhớ đóng luồng sau khi hình ảnh được lưu. Trên thực tế, nhà phát triển sẽ KHÔNG CÓ Ý TƯỞNG rằng hình ảnh được tạo bằng luồng bộ nhớ (vì nó xảy ra trong một số mã khác, ở nơi khác).
Tôi thực sự bối rối :(
using
khối. Tôi nghĩ rằng nó originalBinaryDataStream2
đã được tự động xử lý khi kết thúc việc sử dụng. Và điều đó sẽ ném ra ngoại lệ.