mi sono bloccato con un problema strano (che è probabilmente la mia mancanza di conoscenza), vi presento il codice incriminato:funzioni Elimina Elimina anche quando si chiama applicazione è chiusa
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;
}
fe ftemp sono oggetti FileInfo. Quindi se eseguo questo con codice in cui f è un file video riprodotto in un mediaplayer lancia l'eccezione. Funziona bene e come previsto. Ora quando chiudo il mediaplayer cancella il file !? Anche se la mia domanda è chiusa da tempo. Anche quando chiudo Visual Studio, continua a eliminare il file quando chiudo il mediaplayer. Come se qualche callback venisse installato da qualche parte per assicurarsi che il file venisse cancellato ad un certo punto. Questo è un comportamento indesiderato. Ma io non riesco a capire che cosa va storto ... esattamente
Risultato per ora:
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");
}
so che ancora posso fare meglio tra Elimina e MoveTo, ma mi prendo le mie modifiche per ora , codifica shotgun .....
Il lettore multimediale molto probabilmente ha aperto il file con FILE_SHARE_DELETE, che significa "consenti alle persone di eliminare il file mentre lo sto usando". Il file è contrassegnato per la cancellazione e la cancellazione viene completata quando il lettore multimediale chiude il file. –
Qual è il messaggio fornito con IOException? –
Ma poi mi aspetterei che l'eccezione non venga sollevata. Inoltre l'ho aperto con Windows Media Player, che nel mio libro è infamemente file di blocco ... o non è lo stesso della bandiera che intendi. – JHN