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

时间:2017-10-13 12:51:03

标签: c# windows

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

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

所以: 我有3台远程计算机/位置, A B C

A 开始将某些文件夹/文件复制到 B C 会收听 B

C 如何 A 检查是否使用FileSystemWatcher完成复制? 我不想经常比较 B C 并复制其余文件。

我检查了其他问题,但他们没有回答,或者我已经实施了这些解决方案。 123

1 个答案:

答案 0 :(得分:4)

我想你是在询问系统变更日志。也就是说,在您检测到需要复制文件和真正开始复制之间,总会出现文件正在使用,删除,更新等的情况。这是一篇陈旧但准确的文章,可以为您提供更多详细信息。

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

来自文章摘要:

  

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

向下滚动到标题ReasonMask and ReturnOnlyOnClose