J'ai une application C # Winforms dans laquelle je supprime un fichier vidéo visualisé par un contrôle axWindowsMediaPlayer, qui maintient le fichier DestFile ouvert pendant la lecture de la vidéo. Dans Win 10, je peux supprimer DestFile puis le remplacer par une copie du fichier avec des métadonnées modifiées à l'aide d'un

File.Delete(DestFile) 

commande suivie de

File.Move(SourceFile, DestFile) . 

Dans Win 7 (64 bits), le

File.Delete 

échoue en silence, et le

File.Move 

échoue avec le message

Cannot create a file which alreday exists.

Existe-t-il un moyen de faire en sorte que Win se comporte comme Win 10 et autorise la suppression d'un fichier ouvert à un processus (comme le montre l'utilitaire OpenedFiles)?

0
SimonKravis 4 nov. 2019 à 11:18

1 réponse

A constaté que la fermeture de axWindowsMediaPlayer, la suppression et le déplacement et la réouverture de axWindowsMediaPlayer comme indiqué ci-dessous fonctionnaient sur 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 à 08:35