当我为目录设置上一个写入时间时,会发生异常" the document is being processed by another process "



首先,我删除文件。然后,我尝试修改文件的父目录的最后一个写入时间。最后,我得到了一个例外:"该过程无法访问文件'(父路径(,因为它是由另一个过程使用的"。

string name = file.FullName;
Console.WriteLine(name);
string dir = file.DirectoryName;
DateTime dt = Convert.ToDateTime("2007-8-1");
File.Delete(name);
try
{
    Directory.SetLastWriteTime(dir, dt);
}
catch(Exception e)
{
    Console.WriteLine(e.ToString());
}

我想删除文件,并修改目录的持久时间。非常感谢!

感谢Adam Jachocki的建议,我修复了代码:

string dir = fis[0].DirectoryName; ;
 DateTime dt = Convert.ToDateTime("2007-8-1");
 foreach (FileInfo fi in fis)
  {
      string name = fi.FullName;
        Console.WriteLine(name);
        File.Delete(name);
  }
   Directory.SetLastWriteTime(dir, dt);

但是例外仍然发生。

您应该在循环外执行此操作。

枚举器不会返回所有文件。它宁愿返回每个循环的下一个文件。因此,它可以一直使用目录,因此您会得到异常。您应该这样做:

foreach(var file in DirectoryInfo.GetFiles(...))
{
   File.Delete(...);
}
Directory.SetLastWriteTime(...); //<-- outside the loop

相关内容

最新更新