监控特定文件的关闭 c#

3
我正在开发一个Windows应用程序,以补充我们的Web应用程序。它是一个小型的文档管理系统,类似于Dropbox。我需要在应用程序关闭时自动同步文件。例如,如果通过我的应用程序打开了一个.DWG(AUTOCAD)文件,则应该在该特定文件关闭时触发事件。使用Filesystemwatcher类能否实现这一点?问题在于,在AUTOCAD中,文件是作为选项卡打开的,我知道我们可以使用interop库在MS Office应用程序中执行此操作。我们如何在AUTOCAD和Photoshop等应用程序中实现相同的操作呢?
3个回答

3

尝试使用FileSystemWatcher的Changed事件。可以这样做:

    FileSystemWatcher watcher = new FileSystemWatcher();
    watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
       | NotifyFilters.FileName;
    // Only watch AutoCAD files.
    watcher.Filter = "*.dwg";
    watcher.Changed += new FileSystemEventHandler(OnChanged);

但是我们能否跟踪文件关闭的确切时刻呢? - midhun
也许AutoCAD在关闭文件时有一些特定的行为,例如从同一文件夹中删除相关的临时文件,就像MS Office一样?如果不是这种情况,我想不到其他方法,除了开发特殊的AutoCAD插件。 - cyberj0g

0

在AutoCAD中,您也可以使用其.NET API开发插件(就像MS Office一样)。

当您关闭文档(无论是保存还是不保存)时,会触发DocumentCollection.DocumentDestroyed事件:http://docs.autodesk.com/ACD/2010/ENU/AutoCAD%20.NET%20Developer's%20Guide/index.html?url=WS1a9193826455f5ff2566ffd511ff6f8c7ca-4875.htm

或者您可以使用Database.SaveComplete事件。

无论如何,这将需要一个与AutoCAD一起运行的应用程序,如果您跟踪文件(FileSystemWatcher),则会更容易。


0

对于AutoCAD使用FileSystemWatcher来监视创建和删除的.dwl文件。该文件包含有关谁何时打开文件的元数据。当文件关闭并释放锁定时,它将被删除。较新版本还有一个.dwl2文件。需要注意的是,如果AutoCAD崩溃,它可能会被遗留下来。

我不记得在只读方式打开文件时是否会创建它,但在这种情况下无需同步它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接