Невозможно использовать File.Delete () _ для удаления файла, заблокированного для обработки на Win 7 - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть приложение C # Winforms, в котором я удаляю видеофайл, просматриваемый элементом управления axWindowsMediaPlayer, который сохраняет файл DestFile открытым во время воспроизведения видео. В Win 10 я могу удалить DestFile, а затем заменить его копией файла с измененными метаданными, используя команду

File.Delete(DestFile) 

, за которой следует

File.Move(SourceFile, DestFile) . 

В Win 7 (64-разрядная версия))

File.Delete 

завершается сбоем молча, а

File.Move 

завершается с сообщением

Cannot create a file which alreday exists.

Есть ли способ заставить Win вести себя как Win 10 иразрешить удаление файла, открытого для процесса (как показано утилитой OpenedFiles)?

1 Ответ

0 голосов
/ 04 ноября 2019

Обнаружено, что закрытие axWindowsMediaPlayer, выполнение операций удаления и перемещения и повторное открытие axWindowsMediaPlayer, как показано ниже, работают на Win 7

 axWindowsMediaPlayer1.currentPlaylist.clear();
 axWindowsMediaPlayer1.URL = null;

 System.IO.File.Delete(sFileAction);
 System.IO.File.Move(sDestFile, sFileAction);

 axWindowsMediaPlayer1.currentPlaylist = axWindowsMediaPlayer1.newPlaylist("aa", "");
 axWindowsMediaPlayer1.currentPlaylist.clear();
 axWindowsMediaPlayer1.currentPlaylist.appendItem(axWindowsMediaPlayer1.newMedia(sFileAction));
 axWindowsMediaPlayer1.Ctlcontrols.play();`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...