Muhammad Rehbar Sheikh Ответов: 3

Как я могу удалить изображения из папки application.startuppath (например: project\bin\debug\image) с помощью C# ошибка: процесс не может получить доступ к файлу 'filename', потому что он используется другим процессом.


<pre>DialogResult result1 = MessageBox.Show("Are you sure to Remove?", "Important Question", MessageBoxButtons.YesNo);
                        if (result1 == DialogResult.Yes)
                        {

                            while (listBox1.SelectedItems.Count > 0)
                            {
                                string FileName = "";
                                FileName = listBox1.SelectedItems[0].ToString();
                                listBox1.Items.Remove(listBox1.SelectedItems[0]);
                                string path = Application.StartupPath + @"\Image\" + FileName;
                                //string path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) + @"\Image\" + FileName;
                                //string path = Path.GetDirectoryName(Application.ExecutablePath) + @"\Image\" + FileName;
                             
                                //using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate))
                                //using (StreamWriter str = new StreamWriter(fs))
                                //{

                                if (File.Exists(path))
                                {
                                    File.Delete(path);
                                }
                                //    str.Close();
                                //    fs.Close();
                                //}
                                pictureBox1.Image = null;
                                pictureBox2.Image = null;
                                textBox1.Text = "";
                                MessageBox.Show("File Successfully Removed.");
                            }
                        }
                        else
                        {
                            return;

                        }



Что я уже пробовал:

я пытаюсь удалить выбранное изображение (выбранное из списка) из папки приложения. Итак, я получаю ошибку: процесс не может получить доступ к файлу "filename", потому что он используется другим процессом. пожалуйста, помогите, если кто-нибудь знает, как открыть и закрыть соединение для доступа к файлам операций ввода-вывода.

3 Ответов

Рейтинг:
1

Wessel Beulink

if (result1 == DialogResult.Yes)
                        {
 
                            if (listBox1.SelectedItems.Count > 0)
                            {
                                string FileName = "";
                                FileName = listBox1.SelectedItems[0].ToString();
                                listBox1.Items.Remove(listBox1.SelectedItems[0]);
                                string path = Application.StartupPath @"\Image\" + FileName;
                                //string path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) + @"\Image\" + FileName;
                                //string path = Path.GetDirectoryName(Application.ExecutablePath) + @"\Image\" + FileName;
                             
                                //using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate))
                                //using (StreamWriter str = new StreamWriter(fs))
                                //{

                                if (File.Exists(path))
                                {
                                    File.Delete(path);
                                }
                                //    str.Close();
                                //    fs.Close();
                                //}
                                pictureBox1.Image = null;
                                pictureBox2.Image = null;
                                textBox1.Text = "";
                                MessageBox.Show("File Successfully Removed.");
                            }
                        }


измените время на если. Вы пытаетесь удалить его несколько раз.
Кроме того, остальное не обязательно, вы можете удалить его.


Muhammad Rehbar Sheikh

да, но все равно я получил ту же ошибку.

Wessel Beulink

Лол... Мэби, твой список использует его? Постарайтесь понять основы. Вы неправильно используете вещи. В любом случае, почему вы не удаляете после закрытия формы?

Muhammad Rehbar Sheikh

постараюсь! спасибо.

Рейтинг:
0

Patrice T

Цитата:
ошибка: процесс не может получить доступ к файлу "filename", поскольку он используется другим процессом.

Довольно откровенно! Какое слово вы не понимаете в сообщении об ошибке ?

Ответ содержится в сообщении об ошибке: вы не можете удалить файл,который используется вашим процессом или другим. И он не изменится до тех пор, пока другой процесс не прекратит использовать этот файл.


Muhammad Rehbar Sheikh

я не могу выяснить, какой процесс на самом деле используется в этом файле. мой общий способ заключается в том, что >>просмотр файла изображения> & gt;Добавить его в listbox> & gt;удалить выбранное изображение из listbox и (из его фактического приложения startuppath bin>debug>Image folder)

но когда я запускаю свой проект ,я пытаюсь удалить этот файл. первый раз был удален. но во второй раз я получаю ту же ошибку. так что я должен знать.

Рейтинг:
0

Richard Deeming

Наиболее вероятным объяснением является то, что вы использовали Image.FromFile для загрузки изображения или передачи пути к файлу PictureBox контроль. Это блокирует файл до тех пор, пока ваше приложение не завершит работу.

Файл образа заблокирован, когда вы выберите элемент управления PictureBox свойство изображения в файл[^]

Решение состоит в том, чтобы использовать Image.FromStream вместо. Это только блокирует файл, пока поток открыт.

using (var stream = File.OpenRead(PathToYourImageFile))
{
    yourPictureBox.Image = Image.FromStream(stream);
}


Muhammad Rehbar Sheikh

Спасибо! я использовал ваш код для загрузки изображения в picturebox. но все равно получил ту же ошибку при удалении. на самом деле, когда я запускаю свой проект, я пытаюсь удалить этот файл. первый раз был удален. но во второй раз я получаю ту же ошибку. мой общий способ заключается в том, чтобы >>просмотреть файл изображения>>Добавить его в listbox>>удалить выбранное изображение из listbox и (из его фактического приложения startuppath bin>debug>Image folder).

я не могу выяснить, какой процесс на самом деле используется в этом файле. так что я должен знать.