C# 无法使用File.Delete()\删除Win 7上锁定处理的文件

C# 无法使用File.Delete()\删除Win 7上锁定处理的文件,c#,file-io,C#,File Io,我有一个C#Winforms应用程序,其中我删除了axWindowsMediaPlayer控件正在查看的视频文件,该控件在播放视频时保持文件打开。在Win 10中,我可以删除DestFile,然后使用 File.Delete(DestFile) 命令后接 File.Move(SourceFile, DestFile) . 在Win7(64位)中 无声地失败,而 File.Move 与消息一起失败 Cannot create a file which alreday exists.

我有一个C#Winforms应用程序,其中我删除了axWindowsMediaPlayer控件正在查看的视频文件,该控件在播放视频时保持文件打开。在Win 10中,我可以删除DestFile,然后使用

File.Delete(DestFile) 
命令后接

File.Move(SourceFile, DestFile) . 
在Win7(64位)中

无声地失败,而

File.Move 
与消息一起失败

Cannot create a file which alreday exists.

是否有一种方法可以使Win的行为类似于Win 10,并允许删除对进程开放的文件(如OpenedFiles实用程序所示)?

发现关闭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();`

你是说,你可以删除一个被另一个进程使用的文件,然后移入另一个文件,这一切都正常吗?我认为这个故事还有很多。你不能删除一个打开句柄的文件(AFAIK),看起来你可以在Win 10中删除,但在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();`