PDA

View Full Version : حذف عکسی که توسط تابع bitmap ایجاد شده است



ompcj4u
پنج شنبه 12 خرداد 1390, 15:22 عصر
با سلام

من با تابع bitmap یه عکس درست کردم و با تابع save اونو ذخیره کردم و در یک فرم دیگه اونو توی یه picturebox لود کردم

حالا می خوام عکس رو با رفرنسه System.IO و تابع File.Delete پاکش کنم ولی پیغام میده که این فایل توسط پردازش دیگری در حال استفاده است

چه جوری می تونم پاکش کنم

ali.asady
پنج شنبه 12 خرداد 1390, 18:43 عصر
با قرار دادن مقدار null برای bitmap می تونید
آن را آزاد کنید و
با قرار دادن دستورات در
try
{}
execption()
{}

اینکار رو بکنید

haghft
پنج شنبه 12 خرداد 1390, 22:17 عصر
شما باید به جای استفاده از bitmap.fromfile یا image.fromefile از این کد استفاده کن من خودم این مشکل داشتم با این روش حل شد.
مثال:
FileStream fs = new FileStream(@"d:\a.jpg", FileMode.Open);
picturebox.image = Image.FromStream(fs);
fs.Close();

ompcj4u
جمعه 13 خرداد 1390, 23:48 عصر
سلام
مشکل از bitmap نیست
امتحان کردم، بارها یه عکس رو با نام مشابه ایجاد می کنه(در واقع Replace می کنه)و مشکلی پیش نمیاد
ولی همین که عکس رو توی یه فرم دیگه توی یه pictureBox نشونش میدم خطا تولید میکنه
(فرم رو با متد ShowDialog نشونش می دم و تا بسته نشه کاربر نمی تونه عکس جدیدی ایجاد کنه)
لازم به ذکره من از PictureBox خود VS استفاده نکردم یه کامپوننت اماده بود که قابلیت زوم رو داره
توی فرمی که عکس رو نشون میده توی تابع FormClosing دو خط کد زیر رو نوشتم
pb.Dispose();
pb.Picture = null;
ولی بازهم فایده ای نداشت

ompcj4u
جمعه 13 خرداد 1390, 23:51 عصر
شما باید به جای استفاده از bitmap.fromfile یا image.fromefile از این کد استفاده کن من خودم این مشکل داشتم با این روش حل شد.
مثال:
FileStream fs = new FileStream(@"d:\a.jpg", FileMode.Open);
picturebox.image = Image.FromStream(fs);
fs.Close();

سلام
من از یک کامپوننت اماده به جای PictureBox استفاده کردم که قابلیت زوم داره
PictureBox1.Picture = String
فقط رشته قبول می کنه
متد fs رو هم .ToString() زدم فایده ای نداشت
تشکر