代码之家  ›  专栏  ›  技术社区  ›  thewpfguy

如何等待文件完全复制?

  •  5
  • thewpfguy  · 技术社区  · 15 年前

    我有一个线程,它在文件夹中轮询新文件。问题是,它会看到一个新文件并开始处理它,甚至在文件被另一个进程完全复制之前。因此,轮询器获取另一个进程错误使用的文件。

    有没有办法检查文件是否可以自由使用或得到通知?我们当然可以使用异常处理代码,但是有更好的方法吗?

    技术:.net 2.0/c#

    更新:

    • 从其他答案中发现,如果我们可以访问编写文件的应用程序,那么更好的设计是从其他扩展名.tmp开始,然后在复制后重命名它。

    • 如果不控制源应用程序,则可以使用filestream.lock

    1 回复  |  直到 15 年前
        1
  •  2
  •   Jimmie R. Houts    15 年前

    我们尝试在处理文件之前获取该文件的锁,并在尝试读取该文件时处理IOException而不是一般异常。

    FileStream.Lock 在MSDN上。

    推荐文章