Saltar al contenido

Eliminar un archivo que está siendo utilizado por otro proceso

Solución:

puede ser un problema de recolección de basura.

System.GC.Collect(); 
System.GC.WaitForPendingFinalizers(); 
File.Delete(picturePath);

Para liberar un archivo de imagen después de cargarlo, debe crear sus imágenes configurando el BitmapCacheOption.OnLoad bandera. Una forma de hacer esto sería la siguiente:

string filename = ...
BitmapImage image = new BitmapImage();
image.BeginInit();
image.CacheOption = BitmapCacheOption.OnLoad;
image.UriSource = new Uri(filename);
image.EndInit();

Aunque estableciendo BitmapCacheOption.OnLoad funciona en un BitmapImage que se carga desde un archivo local Uri, esto no está documentado en ninguna parte. Por lo tanto, una forma probablemente mejor o más segura es cargar la imagen desde un FileStream, configurando el StreamSource propiedad en lugar de UriSource:

string filename = ...
BitmapImage image = new BitmapImage();

using (var stream = File.OpenRead(filename))
{
    image.BeginInit();
    image.CacheOption = BitmapCacheOption.OnLoad;
    image.StreamSource = stream;
    image.EndInit();
}

Otra forma es eliminar el archivo. Cargue su archivo usando la clase FileStream y libere un archivo a través de stream.Dispose (); nunca le dará la excepción “El proceso no puede acceder al archivo” porque está siendo utilizado por otro proceso “.

using (FileStream stream = new FileStream("test.jpg", FileMode.Open, FileAccess.Read))
{
    pictureBox1.Image = Image.FromStream(stream);
     stream.Dispose();
}

 // delete your file.

 File.Delete(delpath);
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *