title: System.IO.IOException: The process cannot access the file
body: <p>i have a button that will saved the images to the database and a function that will delete the directory were i store the images temporarily before saving to the database.<br>
  Here are the code  </p>
  
  <pre><code>private void btnSave_Click(object sender, EventArgs e)
      {
          imgTemp = new System.Windows.Forms.PictureBox();
          imgTemp.Image = Image.FromFile(@cwd + "\\Final.jpg");
          MemoryStream mstr = new MemoryStream();
          imgTemp.Image.Save(mstr, imgTemp.Image.RawFormat);
          byte[] arrImage = mstr.GetBuffer();
          //Set insert query
          imgTemp.Image = null; 
          imgTemp.Dispose();
  
          string qry = "insert into FinalImages (FinalImageName, FinalImage, Parts) values(@FinalImageName, @FinalImage, @Parts)";
  
          SqlConnection c = new SqlConnection(c_string);
          //Initialize SqlCommand object for insert.
          SqlCommand SqlCom = new SqlCommand(qry, c);
  
          //We are passing Original Image Path and Image byte data as sql parameters.
          SqlCom.Parameters.Add(new SqlParameter("@FinalImageName", SqlDbType.Char, 40)).Value = textBox1.Text + ".jpg";
          SqlCom.Parameters.Add(new SqlParameter("@FinalImage", SqlDbType.Image)).Value = arrImage;
          SqlCom.Parameters.Add(new SqlParameter("@Parts", SqlDbType.VarChar, 40)).Value = NumOfFiles;
  
          try
          {
              c.Open();
              SqlCom.ExecuteNonQuery();
          }
          catch (System.Data.SqlClient.SqlException err)
          {
              MessageBox.Show(err.Message);
          }
          finally
          {
              c.Close();
          }
  
          // How many Picture files in this folder
          imgArray2 = new System.Windows.Forms.PictureBox[NumOfFiles];
          for (int i = 0; i &lt; NumOfFiles; i++)
          {
  Bitmap(imgName[i]);
              imgArray2[i] = new System.Windows.Forms.PictureBox();
              imgArray2[i].Image = Image.FromFile(imgName[i]);
              string name2 = textBox1.Text + ".jpg";
              string name3 = imgName[i].Substring(imgName[i].LastIndexOf(@"\") + 1,           imgName[i].Length - imgName[i].LastIndexOf(@"\") - 1);
              MemoryStream mstr2 = new MemoryStream();
              imgArray2[i].Image.Save(mstr2, imgArray2[i].Image.RawFormat);
              byte[] arrImage2 = mstr2.GetBuffer();
              string cmd2 = "insert into ImageParts (FinalImageName, ImagePartName, ImagePart) values (@FIName2, @IPName, @IP)";
  
              SqlConnection c2 = new SqlConnection(c_string);
              SqlCommand comm2 = new SqlCommand(cmd2, c2);
              comm2.Parameters.Add(new SqlParameter("@FIName2", SqlDbType.Char, 40)).Value = name2;
              comm2.Parameters.Add(new SqlParameter("@IPName", SqlDbType.Char, 40)).Value = name3;
              comm2.Parameters.Add(new SqlParameter("@IP", SqlDbType.Image)).Value = arrImage2;
  
              try
              {
                  c2.Open();
                  comm2.ExecuteNonQuery();
              }
              catch (System.Data.SqlClient.SqlException err)
              {
                  MessageBox.Show(err.Message);
              }
              finally
              {
                  c2.Close();
              }
  
          }
          DelDir();
          this.Hide();
          fourthForm.Show();
      }
  
      private void DelDir()
      {
          string[] files = Directory.GetFiles(cwd);
          string[] dirs = Directory.GetDirectories(cwd);
  
          foreach (string file in files)
          {
              File.SetAttributes(cwd, FileAttributes.Normal);
              File.Delete(file);
          }
  
          Directory.Delete(cwd, false);
      }
  </code></pre>
  
  <p>and this is the full exception  </p>
  
  <pre><code>A first chance exception of type 'System.IO.IOException' occurred in mscorlib.dll
  System.IO.IOException: The process cannot access the file 'C:\...\Final.jpg' because it is being used by another process.
  at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
  at System.IO.File.Delete(String path)
  at BlueStitch.frmStitch.DelDir() in C:\...\frmStitch.cs:line 953
  at BlueStitch.frmStitch.button1_Click(Object sender, EventArgs e) in C:\...\frmStitch.cs:line 940
  at System.Windows.Forms.Control.OnClick(EventArgs e)
  at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
  at System.Windows.Forms.Control.WmMouseUp(Message&amp; m, MouseButtons button, Int32 clicks)
  at System.Windows.Forms.Control.WndProc(Message&amp; m)
  at System.Windows.Forms.ButtonBase.WndProc(Message&amp; m)
  at System.Windows.Forms.Button.WndProc(Message&amp; m)
  at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&amp; m)
  at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
  at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG&amp; msg)
  at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
  at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
  at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
  at BlueStitch.Program.Main() in C:\Users\Freddie Rosillo\Documents\Visual Studio 2008\Projects\BlueStitch\BlueStitch\BlueStitch\Program.cs:line 21
  </code></pre>
  
  <p>Line was the <code>File.Delete(file);</code><br>
  i think i tried to dispose the image file but still doesn't work<br>
  help please  </p>