我有一个作为Windows服务运行的程序;它处理特定文件夹中的文件。由于它是一项服务,它会不断监视文件夹以查找已添加的新文件。程序的一部分工作是对目标文件夹中的文件进行比较,并标记不匹配的文件。我想要做的是能够检测复制操作是否正在进行以及何时完成,这样,如果文件尚未被复制到目标文件夹,则文件不会被过早标记。C# - 等待复制操作完成
我在想的是使用FileSystemWatcher观察目标文件夹并查看是否正在进行复制操作。如果有,我把我的程序的主线程休眠,直到复制操作完成,然后继续对文件夹执行正常操作。我只是想了解一下这种方法,看看它是否有效;如果其他人有任何其他独特的方法来解决这个问题,将不胜感激。
UPDATE:
谢谢大家的建议
更新2:
我的混乱道歉,当我说目标目录,我的意思是包含了所有我想要的文件的源文件夹处理。我的程序的一部分功能是将源目录的目录结构复制到目标目录,并将所有有效的文件复制到该目标目录,保留原始源目录的目录结构,即用户可以复制包含文件的文件夹到源目录。我想通过确保包含更多子文件夹和文件的一组新文件夹被复制到源目录中进行处理来防止错误,直到复制过程完成后,我的程序才会开始在目标目录上运行。
+1。这是一个非常好的问题。我还没有想出一种不觉得像黑客的方法。 – David 2011-01-13 17:35:51
这个问题是类似的,有一些很好的答案:http://stackoverflow.com/questions/30074/monitoring-files-how-to-know-when-a-file-is-complete – mfdoran 2011-01-13 17:38:20