我尝试删除图片框中使用的图像时出现错误

时间:2019-09-02 09:06:50

标签: c# image winforms picturebox

我正在使用Visual Studio 2013创建c#Windows应用程序,但遇到了此错误。

当我尝试删除在图片框中使用的图像时,会出现此错误消息。:

  

System.IO.IOException:进程无法访问文件   'C:\ Users \ ALI PC \ Documents \ My Projects \ Doctor Clinic \ Doctor   Clinic \ Images \ 1.jpg”,因为它正在被另一个进程使用。
  在System.IO .__ Error.WinIOError(Int32 errorCode,可能是StringFullPath)   在System.IO.FileStream.Init(字符串路径,FileMode模式,FileAccess   访问,Int32权限,布尔useRights,FileShare共享,Int32   bufferSize,FileOptions选项,SECURITY_ATTRIBUTES secAttrs,字符串   MSGPATH,布尔bFromProxy,布尔useLongPath,布尔checkHost)
  在System.IO.FileStream..ctor(字符串路径,FileMode模式,FileAccess   访问,FileShare共享,Int32 bufferSize,FileOptions选项,字符串   msgPath,位于System.IO.FileStream..ctor(String)上的布尔bFromProxy)   路径,FileMode模式)位于   Doctor_Clinic.Forms.ReportForm.deleteBtn_Click(对象发送方,   c:\ Users \ ALI PC \ Documents \ My Projects \ Doctor中的EventArgs e)   诊所\医生诊所\表格\ ReportForm.cs:第94行

StaticResource

2 个答案:

答案 0 :(得分:0)

您的标题具有误导性。引发的行不是Delete,而是Dispose

您已经将其设置为null,因此无法再Dispose使用它。改用它:

   ..
   if (PatientImage.Image != null)
   {
      Image dummy = PatientImage.Image; 
      PatientImage.Image = null; 
      dummy.Dispose(); 
   }
   ..

首先,我们为图像存储一个新的虚拟引用;然后从控件中清除该引用,最后使用虚拟引用释放GDI资源。

每当您要将新的Image设置为PictureBox时,也建议这样做。

(这看起来比处理 reference 变量时要复杂的多;但这不是{strong>不是 PictureBox.Image的意思。它是< strong> property ,幕后还有各种各样的附加功能。)

答案 1 :(得分:-2)

您的映像已由计算机上的另一个应用程序或另一个正在运行的作业使用。 为确保没有人使用该映像,请重新启动计算机,然后重试。如果这样不起作用,请检查文件的权限