আমি কিছু বাইনারি ডেটা পেয়েছি যা আমি একটি চিত্র হিসাবে সংরক্ষণ করতে চাই। আমি যখন ছবিটি সংরক্ষণ করার চেষ্টা করি তখন এটি ব্যতিক্রম ছুঁড়ে দেয় যদি চিত্রটি তৈরি করতে ব্যবহৃত মেমরি স্ট্রিমটি সংরক্ষণের আগে বন্ধ হয়ে যায়। আমি এটি করার কারণটি হ'ল কারণ আমি গতিশীলভাবে চিত্রগুলি তৈরি করছি এবং এর মতো .. আমার একটি স্মৃতি প্রবাহ ব্যবহার করা দরকার।
এই কোড:
[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.
}
স্ট্রিমটি বন্ধ হয়ে কীভাবে আমি কোনও চিত্র সংরক্ষণ করতে পারি সে সম্পর্কে কারও কি কোনও পরামর্শ আছে? চিত্রটি সংরক্ষণের পরে স্ট্রিমটি বন্ধ করার কথা মনে রাখতে আমি বিকাশকারীদের উপর নির্ভর করতে পারি না। প্রকৃতপক্ষে, বিকাশকারীটির কোনও আইডিইএ থাকবে না যে চিত্রটি একটি মেমরি স্ট্রিম ব্যবহার করে তৈরি করা হয়েছিল (কারণ এটি অন্য কোনও কোডে অন্যত্র হয়) happens
আমি সত্যি বিভ্রান্ত :(
using
ব্লকের ভিতরে সংরক্ষণ করুন । আমি মনে করি originalBinaryDataStream2
ব্যবহার শেষে স্বয়ংক্রিয়ভাবে নিষ্পত্তি হয়েছিল। এবং এটি ব্যতিক্রম নিক্ষেপ করবে।