3

想象一个 winform 应用程序,它将更新的程序集从源文件夹 A 复制到目标文件夹 B。我使用简单的 DirectoryInfo.GetFiles 方法填充列表视图,比较文件夹 A 和 B 中的程序集版本;如果某些程序集较新,我将开始我的更新方法。在这种方法中,在复制之前,我会尝试 B 文件夹中的所有文件是否都未使用:

var B = new DirectoryInfo("myBfolder");
foreach (var file in aFolder.GetFiles())
{
    try
    {
        //File not in use
        File.Open(file.FullName, FileMode.Open, FileAccess.ReadWrite, FileShare.None);
    }
    catch (Exception ex)
    {
        //File in use!
    }
}

好吧,由于以前的 UpdateListView 代码使用 FileInfo 来获取要显示的信息,因此我的所有文件都在使用中!

FileInfo 锁定文件!这可能吗?

有人可以建议绕过这个问题的方法吗?

谢谢你,南多

4

1 回答 1

5

不,是File.Open锁定文件的人。

尝试将其投入使用:

using(var file = File.Open(file.FullName, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
{
   // process here
}
于 2010-08-26T14:31:58.580 回答