System.IO.FileSystemWatcher

这个类功能很强。可以实时监测文件系统的变化。

https://msdn.microsoft.com/zh-cn/library/system.io.filesystemwatcher.aspx

事件

使用不如预期。重复发送消息,操作结束时并不会通知我们。

例如,拷贝一个文件,在文件拷贝完成后进行操作,但我们无法知道什么时候拷贝操作完成。

拷贝文件时,响应的事件:Created、Changed、Changed(...)

其实,知道这些就已经可以了。

新增文件时,首先收到Created消息。下面我们需要做一些额外的工作来监视文件是否写入完毕。

这里使用了独占方式读取文件,发生异常,表示写入未完成。 

using (FileStream fs = new System.IO.FileStream(item.FullPath, FileMode.Open, FileAccess.Read, FileShare.None))
{
     fs.Close();
}

当收到Created消息后,在while中独占读取文件。

原文地址:https://www.cnblogs.com/lucika/p/5166551.html