PDA

View Full Version : حرفه ای: حذف فایل



araz_pashazadeh
سه شنبه 05 آذر 1392, 00:03 صبح
من در برنامه عکس هر کاربر را در داخل پوشه قرار می دهم.
وقتی از طریق برنامه می خوام وقتی کاربر حذف شد عکس مربوط به آن هم حذف
بشه ولی با خطای زیر مواجه میشم.
دلیلش چیه؟
File.Delete(Application.StartupPath + "\\Pic\\" + openFileDialogFolder.FileName);

علی متقی پور
سه شنبه 05 آذر 1392, 00:45 صبح
با سلام

همینطوری که از متن مشخصه داره میگه توسط برنامه دیگه ای در حال استفاده است. ما که به جزئیات کار شما آگاهی نداریم ولی خب قاعدتا شما باید خودتون بررسی کنید که آیا واقعا در حال استفاده هست یا نه و مشکل از جای دیگه ای کلا

danialafshari
سه شنبه 05 آذر 1392, 00:55 صبح
سلام دوست عزیز
عکس شما توسط پروسس دیگه یا آبجکت دیگه در حال اجراس
برای پاک کردن اون باید اون رو Dispose کنی
کد زیر یک عکس رو درون یک PictureBox قرار میده
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog f = new OpenFileDialog();
f.ShowDialog();
pictureBox1.Image = System.Drawing.Image.FromFile(f.FileName);
}
اگر بخوای عکسی رو که درون PictureBox باز کردی پاک کنی مطمئناً با ارور بالا روبرو میشی
OpenFileDialog f = new OpenFileDialog();
f.ShowDialog();
System.IO.File.Delete(f.FileName);

MessageBox.Show("حذف شد");
پس باید picturebox.image رو dispose کنی :
private void button2_Click(object sender, EventArgs e)
{
OpenFileDialog f = new OpenFileDialog();
f.ShowDialog();
pictureBox1.Image.Dispose();
System.IO.File.Delete(f.FileName);

MessageBox.Show("حذف شد");
}
موفق باشید

araz_pashazadeh
سه شنبه 05 آذر 1392, 21:42 عصر
ممنون از راهنمایی شما واقعا عالی بود.
ولی باز همون خطا را داد نمی دانم چرا:ناراحت:
اینم تکه کد من
pictureBoxStorelogo.Image.Dispose();
File.Delete(Application.StartupPath + "\\Pic\\" + openFileDialogFolder.FileName);
مثل کد شما هست ولی طریقه بدست آوردن مسیر فایل فرق می کنه.
میتونه مشکل از پوشه عکس ها باشه، نیاز به مجوز خاصی داره؟

danialafshari
سه شنبه 05 آذر 1392, 22:47 عصر
سلام
ممکنه آبجکت دیگری هم از این عکس استفاده کنه و فکر می کنم نیازی به مسیری که شما بالا در کد گذاشتید نیست و از مسیر من استفاده کنید نهایتاً کل اون مسیر رو در MessageBox نمایش میدید که ببینید درسته یا نه
به مورد دیگه ای برنخوردم، اگر برنامه یا شبه برنامه ای قرار بدید دوستان بهتر میتونن راهنمائی کنن
موفق باشید

rahnema1
سه شنبه 05 آذر 1392, 22:59 عصر
شاید این راهکار مشکل باشه:
دکمه اول فایل را کپی می کنه و تصویر را روی پیکچر باکس میذاره و دکمه دومی هم تصویر رو حذف می کنه


Bitmap bm;
private void button1_Click(object sender, EventArgs e)
{
System.IO.File.Copy(openFileDialog1.FileName.ToStr ing(), address + "\\1.jpg (file://\\1.jpg)", true);
bm =new Bitmap(address + "\\1.jpg (file://\\1.jpg)");
pictureBox1.Image = bm;
}
private void button2_Click(object sender, EventArgs e)
{
pictureBox1.Image = null;
bm.Dispose();
System.IO.File.Delete(address + "\\1.jpg (file://\\1.jpg)");
}

araz_pashazadeh
پنج شنبه 07 آذر 1392, 19:24 عصر
به نظر خودم هم خیلی پیش پا افتاده میاد ولی نمیدونم چرا این مشکل پیش میاد؟
در مورد نمونه برنامه باید بگم یه پروژه که عکس را در پوشه ذخیره کنه بعدااگه خواستم پاک کنه همین اگه شما رو سیتم خودتون تست کنید ممنون میشم.
میدونم مسخر میاد ولی واقعا کلافه شدم....
پروژه به خاطر این مشکل همینطوری مونده.
خیلی مممنون میشم اگه این کار را رو سیتم خودتون تست کنید.

araz_pashazadeh
پنج شنبه 07 آذر 1392, 19:39 عصر
به نظر خودم هم خیلی پیش پا افتاده میاد ولی نمیدونم چرا این مشکل پیش میاد؟
در مورد نمونه برنامه باید بگم یه پروژه که عکس را در پوشه ذخیره کنه بعدااگه خواستم پاک کنه همین اگه شما رو سیتم خودتون تست کنید ممنون میشم.
میدونم مسخر میاد ولی واقعا کلافه شدم....
پروژه به خاطر این مشکل همینطوری مونده.
خیلی مممنون میشم اگه این کار را رو سیتم خودتون تست کنید.

rahnema1
پنج شنبه 07 آذر 1392, 19:59 عصر
دوست عزیز من این مورد رو چندین و چند بار تست کردم

rahnema1
پنج شنبه 07 آذر 1392, 20:03 عصر
این پروژه رو امتحان کنید
من حدس می زنم شما در طول کدتون مرتبا دارید از همون تصویر به روش سابق استفاده می کنید لطفا توی کل برنامه بگردید و هر موردی را که یافتید به روش جدید تغییر بدهید در غیر اینصورت کد خودتون رو بذارید ببینیم مشکلش چیه؟