C# 如何删除在C中设置为图片框背景图像的图像#

C# 如何删除在C中设置为图片框背景图像的图像#,c#,C#,我有一个C#win表单应用程序,它将一个新的image=设置为一个文件中的图像。像这样: var displayPicture = Image.fromFile(/*path*/); PicBoxPictureDisplay.BackgroundImage = displayPicture; 但当我用以下方法删除它时: File.Delete(/*path*/); 我得到:“进程无法访问文件[在.FromFile中使用的文件名] 如何删除.FromFile图像 编辑:以下方法失败 PicBo

我有一个C#win表单应用程序,它将一个新的image=设置为一个文件中的图像。像这样:

var displayPicture = Image.fromFile(/*path*/);
PicBoxPictureDisplay.BackgroundImage = displayPicture;
但当我用以下方法删除它时:

File.Delete(/*path*/);
我得到:“进程无法访问文件[在.FromFile中使用的文件名]

如何删除.FromFile图像

编辑:以下方法失败

  • PicBoxPictureDisplay.BackgroundImage.Dispose()
  • PicBoxPictureDisplay.BackgroundImage=null
  • displayPicture.Dispose()

  • 如前所述,您需要处理对象。具体来说,您需要在
    背景图像上调用
    dispose()

    PicBoxPictureDisplay.BackgroundImage.Dispose();
    System.IO.File.Delete("test.png");
    
    这样,文件上的锁将被重新实现,您可以删除它


    设置
    PicBoxPictureDisplay.BackgroundImage=null;
    没有帮助,因为它不会从内存中删除加载后的对象。它只会删除对该对象的引用。锁仍将保留。

    在删除文件之前,您应该处理displayPicture对象。请解释一下您的操作(为什么要这样做)?您应该将其作为图片框中的背景删除,并明确删除对其的引用(处置保存该图像的对象)。@IkramTurgunbaev我已尝试displayPicture.dispose();仍然失败。@SeM我想删除我为displayImageI设置的图像。我尝试了,仍然失败。那么问题不是由您发布的代码引起的。因为使用您发布的代码,我的解决方案可以工作。我刚刚测试了它。是否有其他进程正在使用此文件?您是否在其他任何地方将其用作背景图像?不,我不知道f、 唯一不同的是,我使用它来获取文件路径:public string GetFilePath(string fileName){string path=“”;var pathToReturn=new FileInfo(fileName);path=pathToReturn.FullName;return path;}