utknąłem z dziwnym problemem (co jest chyba mój brak wiedzy), przedstawiam kod naruszające:funkcje Usuń Usuwa nawet podczas wywoływania aplikacja jest zamknięty
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;
}
f i fTemp są obiektami Fileinfo. Więc jeśli uruchomię to z kodem, gdzie f jest plikiem wideo odtwarzanym w mediaplayer, zgłasza wyjątek. To działa dobrze i zgodnie z oczekiwaniami. Teraz, kiedy zamykam mediaplayer, kasuje plik !? Mimo że moja aplikacja jest długo zamknięta. Nawet po zamknięciu Visual Studio nadal kasuje plik, gdy zamykam mediaplayer. Tak, jakby jakiś callback był gdzieś ustawiony, aby upewnić się, że plik zostanie usunięty w pewnym momencie. Ten kurs niechcianego zachowania. Ale nie mogę dowiedzieć się, co dokładnie idzie źle ...
Wynik teraz:
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");
}
wiem jeszcze można zrobić lepiej między Delete i MoveTo, ale wezmę moje zmiany na teraz , kodowanie shotgun .....
Odtwarzacz multimedialny najprawdopodobniej otworzył plik za pomocą opcji FILE_SHARE_DELETE, co oznacza "pozwól innym usunąć plik, gdy go używam". Plik jest oznaczony do usunięcia, a usuwanie kończy się, gdy odtwarzacz multimedialny zamknie plik. –
Co to jest wiadomość podana przy użyciu wyjątku IOException? –
Ale wtedy oczekiwałbym, że wyjątek nie zostanie podniesiony. Plus otworzyłem go za pomocą Windows Media Player, który w mojej książce niesłychanie blokuje pliki ... czy to nie to samo co oznaczona flaga. – JHN