使用File.Move时获取“文件已被其他进程使用的文件”,为什么/如何解决此问题?

时间:2018-07-18 07:07:13

标签: c# file move

我想使用以下方法移动名称保存在ObservableCollection<String> _collection中的几个文件:

string firstFolderThatContainsEveryFile = "...\Folder\Files";
string secondFolderArchiv = "...\Folder\Files\Archiv";
foreach (var item in _collection)
{
     string firstFolder = System.IO.Path.Combine(firstFolderThatContainsEveryFile, item);
     string secondFolder = System.IO.Path.Combine(secondFolderArchiv, item);
     File.Move(firstFolder, secondFolder);
}

这是第一次工作,但是如果我将新文件加载到firstFolderThatContainsEveryFile中并尝试使用我的move方法,则会出现异常:

  

文件已被其他进程使用

这是步骤: 我打开程序->使用移动方法->成功->关闭程序->用新文件填充文件夹->打开程序->使用移动方法->异常!

在使用我的move方法之前,如何获取processname或processID以关闭该进程,或者还有更好的方法来解决此问题?

1 个答案:

答案 0 :(得分:0)

要弄清楚哪个进程正在使用您的文件,请使用this提出的解决方案,您可以使用Microsoft的工具Handle和此C#代码来调用该工具。

new MiniCssExtractPlugin({
    filename: "[name].css"
})

如果其他程序正在使用该文件,则应该弄清楚他们为什么使用该文件,如果其他程序正在使用该文件,请重新检查代码以了解原因。