移动当前由Windows资源管理器

时间:2016-04-14 14:55:07

标签: c# .net vb.net visual-studio-2010

我的问题与How to rename a folder in c# which is currently opened by windows explorer

相同

作者说他的解决方案是使用SHFileOperation(),但它应该是一个痛苦...这也是我的经验。

有趣的是,用户从那时起发布了使用Visual Basic的引用,并且命令Microsoft.VisualBasic.FileIO.FileSystem.MoveDirectory(...)即使文件夹当前由Windows资源管理器打开也能正常工作。

但是,看起来Visual Basic命令不像C#命令Directory.Move / DirectoryInfo.MoveTo那样是原子的。

如果您尝试使用C#命令移动文件夹,并且文件夹中的某些文件当前已被锁定,那么您将获得异常,C#将不会移动任何内容。就像它是一个原子操作,它会移动一切或什么也不移动。

使用Visual Basic命令,如果文件夹中的某些文件被锁定,您仍然会收到异常,但是,它会移动未锁定的文件并保留其余内容,包括主文件夹。

我需要的是一个可以移动文件夹的命令,即使用户站在Windows资源管理器中的该文件夹中也是如此。如果文件夹中的文件被锁定,则抛出异常而不移动任何内容。

有没有办法让Visual Basic命令成为原子?就像一个stop方法,如果它抛出一个异常,所以它不会移动任何东西?

0 个答案:

没有答案