Tengo una aplicación de Winforms en la que elimino un archivo de vídeo que está viendo un control axWindowsMediaPlayer, que mantiene el archivo DestFile abierto mientras se reproduce el vídeo. En Win 10, puedo eliminar DestFile y luego reemplazarlo con una copia del archivo con metadatos modificados usando un

File.Delete(DestFile) 

comando seguido por

File.Move(SourceFile, DestFile) . 

En Win 7 (64 poco) el

File.Delete 

falla en silencio, y el

File.Move 

falla con el mensaje

Cannot create a file which alreday exists.

¿Hay alguna manera de hacer que Win se comporte como Win 10 y permitir la eliminación de archivos que está abierto a un proceso (como se muestra en la utilidad OpenFiles)?

0
SimonKravis 4 nov. 2019 a las 11:18

1 respuesta

Descubrí que cerrar axWindowsMediaPlayer, realizar Eliminar y mover y volver a abrir axWindowsMediaPlayer como se muestra a continuación funcionó en 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();`
0
SimonKravis 4 nov. 2019 a las 08:35