estoy atascado con un problema extraño (que es probablemente mi falta de conocimiento), presento el código erróneo:funciones Eliminar Elimina incluso cuando la aplicación está cerrada llamando
try
{
f.Delete();
fTemp.MoveTo(f.FullName);
Console.WriteLine("INFO: Old file deleted new file moved in > {0}", f.FullName);
}
catch (IOException ex)
{
Console.WriteLine("ERROR: Output file has IO exception > {0}", f.FullName);
Environment.ExitCode = 1;
}
fy fTemp son objetos FileInfo. Entonces si ejecuto esto con un código donde f es un archivo de video que se reproduce en un reproductor multimedia, arroja la excepción. Eso funciona bien y como se esperaba. Ahora cuando cierro el reproductor multimedia, ¿se elimina el archivo? Aunque mi aplicación está cerrada desde hace mucho tiempo. Incluso cuando cierro Visual Studio, todavía elimina el archivo, cuando cierro el reproductor de medios. Como si se estuviera configurando alguna devolución de llamada en alguna parte para asegurarse de que el archivo se elimine en algún momento. Este curso en el comportamiento no deseado. Pero no puedo averiguar qué es exactamente va mal ...
resultado por ahora:
if (!IsFileLocked(f))
{
try
{
f.Delete();
fTemp.MoveTo(f.FullName);
Console.WriteLine("INFO: Old file deleted new file moved in > {0}", f.FullName);
}
catch (IOException ex)
{
Console.WriteLine("ERROR: Output file has IO exception > {0}", f.FullName);
Environment.ExitCode = 1;
}
catch (UnauthorizedAccessException ex)
{
Environment.ExitCode = 2;
Console.WriteLine("ERROR: Output file is locked > {0}", f.FullName);
}
}
else
{
Environment.ExitCode = 3;
Console.WriteLine("ERROR: Couldn't delete file was locked");
}
Sé que todavía puedo hacerlo mejor entre Eliminar y MoveTo, pero voy a tomar mis cambios por ahora , codificación de escopeta .....
El reproductor de medios probablemente abrió el archivo con FILE_SHARE_DELETE, lo que significa "dejar que las personas eliminen el archivo mientras lo estoy usando". El archivo está marcado para eliminar y la eliminación se completa cuando el reproductor cierra el archivo. –
¿Cuál es el mensaje dado con su IOException? –
Pero entonces esperaría que la excepción no se planteara. Además, lo abrí con Windows Media Player, que en mi libro está bloqueando archivos de manera infame ... ¿o no es lo mismo que la bandera que quieres decir? – JHN