如何知道是否在Windows中完成复制?

我正在编写一个工具来侦听一个位置,最好是远程位置,如果创build了一个新的文件夹或文件,它将把它下载到本地位置。

目前我正在用FileSystemWatcher监听远程文件夹,当创build一个新的文件夹/文件时,我启动一个计时器,如果计时器到达X分钟,它开始将其复制到本地。 在“监视”文件夹中创build一个新文件夹或文件触发FileSystemWatcher.Changed但如果有很多子目录,并且如果有大文件复制到监视文件夹,它有时会失败,它只在复制开始时检测到它,我的计时器可以完成,直到完成。

所以:我有3个远程计算机/位置, ABC

A开始将一些文件夹/文件复制到BC收听B.

C如何检查A是否使用或不使用FileSystemWatcher完成复制? 我不想一直比较BC,并复制其余的文件。

我检查了其他问题,但他们没有回答,或者我已经实施了这些解决scheme。 1,2,3

我想你在问系统更改日志。 也就是说,在检测到需要复制的时间和真正开始复制的时间之间,总会有文件正在使用,被删除,更新等情况。 这是一个古老而准确的文章,可以给你更多的细节。

http://www.microsoft.com/msj/0999/journal/journal.aspx

从文章摘要:

“Windows 2000更改日志”是一个数据库,其中包含对NTFS 5.0卷上的文件或目录所做的每个更改的列表。每个卷都有其自己的“更改日志”数据库,其中包含反映该卷的文件和目录所发生更改的记录。 “

向下滚动到标题ReasonMask and ReturnOnlyOnClose