【发布时间】:2018-07-18 16:35:17
【问题描述】:
我想用这种方法移动几个名称保存在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 方法之前获取进程名称或进程 ID 以关闭进程,或者有更好的方法来解决这个问题?
【问题讨论】:
-
第二次添加文件之前,您的收藏是否为空?如果不是,您的代码将尝试再次移动相同的文件,这肯定会导致这样的错误。
-
@PetervanderHeijden jes,我的收藏是空的。我打开程序->使用移动方法->成功->关闭程序->用新文件填充文件夹->打开程序->使用移动方法->异常!
-
@Liam omg jes 你是对的,我很抱歉我编辑我的问题
-
您的第一个停靠港是identifying what is locking the file。如果您关闭程序不应该是您,我在您的代码中也看不到任何可以执行此操作的内容。我想是病毒软件之类的