如何删除文件,该文件被另一个进程使用c#

本文关键字:文件 另一个 进程 何删除 删除 | 更新日期: 2023-09-27 18:06:23

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

  1. 打开filedialog并选择任意.jpg文件

  2. 在PictureBox中显示文件

  3. 删除文件

我已经尝试在做第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);
        }
 }

如何删除文件,该文件被另一个进程使用c#

替换图像听起来是个好主意-但不要忘记处理仍然保持文件打开的旧Image(默认情况下,直到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);
        }
 }

(也可以直接DisposeImage而不替换PictureBox的图像-这取决于删除后你要做的其他事情-例如,如果PictureBox出现的形式正在关闭,你可能想让这种情况先发生,然后直接处理图像)