保存office文档时,FileSystemWatcher不会触发事件

时间:2015-04-02 08:13:48

标签: c# .net ms-office filesystemwatcher

我正在使用FileSystemWatcher监视目录和子目录以进行文件更改,并通过我的Windows应用程序处理它们。我在配置观察程序时使用NotifyFilter CreationTime,LastWrite和Attributes。更改文件后,我的应用会收到活动。几乎所有使用我的应用程序的计算机都能正常工作。

然而,我的一位同事在他的计算机上遇到了问题,我的应用程序未检测到保存在受监视文件夹中的文件。经过进一步检查,结果发现只检测到Office文件更改。任何非office文件类型更改都会引发事件。

我知道不同办公应用程序的行为,其中文件被保存为临时文件,在保存office文档时被复制,移动或重命名。我忽略了它们,因为我知道我感兴趣的文件的名称。我可以看到我的应用程序收到临时文件被更改的通知,但没有关于实际文件被引发的通知。保存Document1.docx会在此特定计算机上引发以下事件。

  

更改了fp:C:\ Files \ Folder1 f:Folder1 nf:属性,LastWrite,CreationTime
  更改了fp:C:\ Files \ Folder1 f:Folder1 nf:Attributes,LastWrite,CreationTime
  更改了fp:C:\ Files \ Folder1 \〜$ cument1.docx f:Folder1 \〜$ cument1.docx nf:Attributes,LastWrite,CreationTime
  更改了fp:C:\ Files \ Folder1 f:Folder1 nf:属性,LastWrite,CreationTime
  更改了fp:C:\ Files \ Folder1 \ ~WRD0000.tmp f:Folder1 \ ~WRD0000.tmp nf:Attributes,LastWrite,CreationTime
  更改了fp:C:\ Files \ Folder1 \ ~WRD0000.tmp f:Folder1 \ ~WRD0000.tmp nf:Attributes,LastWrite,CreationTime
  更改了fp:C:\ Files \ Folder1 \ ~WRD0000.tmp f:Folder1 \ ~WRD0000.tmp nf:Attributes,LastWrite,CreationTime
  更改了fp:C:\ Files \ Folder1 \ ~WRD0000.tmp f:Folder1 \ ~WRD0000.tmp nf:Attributes,LastWrite,CreationTime
  更改了fp:C:\ Files \ Folder1 \ ~WRD0000.tmp f:Folder1 \ ~WRD0000.tmp nf:Attributes,LastWrite,CreationTime
  更改了fp:C:\ Files \ Folder1 f:Folder1 nf:属性,LastWrite,CreationTime
  更改了fp:C:\ Files \ Folder1 f:Folder1 nf:属性,LastWrite,CreationTime
  更改了fp:C:\ Files \ Folder1 \ ~WRL0001.tmp f:Folder1 \ ~WRL0001.tmp nf:Attributes,LastWrite,CreationTime
  更改了fp:C:\ Files \ Folder1 f:Folder1 nf:Attributes,LastWrite,CreationTime

我创建了一个小应用程序,通过修改各种通知过滤器和事件类型来测试更改。事实证明,只要我添加NotifyFilters.Security,它就会开始为实际文档引发事件。

我不确定为什么会在这台特定的计算机上发生这种情况。问题计算机是一台带有bitlocker的Windows 8.1笔记本电脑。相同的应用程序可以很好地使用相同的操作系统和bitlocker其他类似的笔记本电脑。

添加NotifyFilters.Security是一个非常简单的解决方法,但我很想知道它为何重要。任何想法可能是什么原因?

0 个答案:

没有答案