我们使用 FileSystemWatcher 来监视从我们的文档管理系统打开的文档,如果用户保存了文档,我们会询问他们是否也希望在我们的系统中更新它们。
Excel 2007 中的 XLS 文件存在问题(尚未验证该问题在 2003 年不存在,但似乎只是在 2007 年以兼容模式打开的文件),其中 Changed 事件在打开文件后立即触发,并且然后再次关闭文件,即使没有任何更改或用户选择在关闭时不保存。打开 XLSX 文件时不存在相同的行为。
我编写了一个测试应用程序来验证行为,您可以在 ( http://www.just2guys.net/SOFiles/FSWExcel.zip ) 找到它。在应用程序中,每个 NotifyFilter 类型都有一个 FileSystemWatcher,因此很明显为什么会触发 Changed 事件。
您能想到的任何方式仅在用户以某种方式实际保存文档时才提示用户?我可以在调用 Process.Start 后开始监视文件,这使我可以在打开文档时跳过消息,但在关闭文档时我仍然会收到一条消息,即使没有任何更改。