如何删除文件,该文件由另一个使用C#的进程使用

时间:2015-08-05 10:16:35

标签: c# io filestream delete-file

在我的C#应用​​程序中,我想在下面的场景中删除文件。

  1. OpenFileDialog并选择任何.jpg文件。

  2. 在PictureBox中显示该文件。

  3. 如果需要,请删除该文件。

  4. 我在尝试执行第3步时已尝试在删除之前将默认图像设置为PictureBox,但这不起作用。

    如何删除文件?请建议我。

     // Code for select file.
     private void btnSelet_Click(object sender, EventArgs e)
     {
            if (DialogResult.OK == openFileDialog1.ShowDialog())
            {
                txtFileName.Text = openFileDialog1.FileName;
                myPictureBox.Image = Image.FromFile(openFileDialog1.FileName);
            }
     }
    
     // Code for Delete file
     private void btnDelete_Click(object sender, EventArgs e)
     {
            try
            {
                //myPictureBox.Image = Image.FromFile(System.IO.Directory.GetCurrentDirectory() + @"\Images\defaultImage.jpg");
                System.IO.File.Delete(txtFileName.Text);
                MessageBox.Show("File Delete Sucessfully");
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
     }
    

1 个答案:

答案 0 :(得分:3)

替换图像听起来是个好主意 - 但不要忘记丢弃仍然保持文件打开的旧版Image(默认情况下将会丢弃enter image description here {{} 1}}是垃圾收集 - 在未来的某个未知时间):

Image

(也可能直接private void btnDelete_Click(object sender, EventArgs e) { try { var old = myPictureBox.Image; myPictureBox.Image = Image.FromFile(System.IO.Directory.GetCurrentDirectory() + @"\Images\defaultImage.jpg"); old.Dispose(); System.IO.File.Delete(txtFileName.Text); MessageBox.Show("File Delete Sucessfully"); } catch(Exception ex) { MessageBox.Show(ex.Message); } } 的{​​{1}}而不替换Dispose的图片 - 这取决于您删除后还要做的其他事情 - 例如,如果出现Image的表格正在关闭,您可能希望先让它发生,然后直接处理图像。“