PictureBox y disponer

Debo eliminar un archivo de imagen si ya existe (sobrescribiéndolo) mientras que un PictureBox muestra lo mismo. Sin embargo, si bash eliminar el archivo, PictureBox lo bloquea. Así escribo el siguiente código:

 if (File.Exists(file)) { Image _tmp = (Image)current_pic.Image.Clone(); current_pic.Image.Dispose(); current_pic.Dispose(); File.Delete(path); current_pic.Image = _tmp; current_pic.Image.Save(file, ImageFormat.Jpeg); } else current_pic.Image.Save(file, ImageFormat.Jpeg); 

y la Imagen en el sistema de archivos se borra gracias a pic.Dispose() pero la Imagen no se muestra más dentro del PictureBox . ¿Tal vez el método Dispose() invalida PictureBox ?

Puede leer una imagen en el cuadro de imagen sin bloquearla como se muestra a continuación

 Image img; string file = @"d:\a.jpg"; using (Bitmap bmp = new Bitmap(file)) { img = new Bitmap(bmp); current_pic.Image = img; } if (File.Exists(file)) { File.Delete(file); current_pic.Image.Save(file, ImageFormat.Jpeg); } else current_pic.Image.Save(file, ImageFormat.Jpeg); 

He actualizado el código para soportar incluso la operación de guardar.

Mientras que el código anterior admitía la eliminación incluso después de vincular las imágenes. La secuencia se cerró y esto, mientras se guardaba, resultó en un error de GDI +.

El código recién actualizado cumple con todos sus requisitos de la siguiente manera

  • Permitiendo borrar el archivo mientras las imágenes están vinculadas
  • Guardar la imagen utilizando la propiedad Imagen en el control de Picturebox