监视一个特定的文件闭包c#

本文关键字:文件 闭包 一个 监视 | 更新日期: 2023-09-27 18:02:35

我正在开发一个windows应用程序来补充我们的web应用程序,它是一个像dropbox这样的小型文档管理系统,我必须在其关闭时自动同步文件,例如,如果一个。dwg (AUTOCAD)文件通过我的应用程序打开,一个事件应该触发该特定文件的关闭,是否可能与Filesystemwatcher类?问题是在AUTOCAD中文件是作为标签打开的,我知道我们可以在MS Office应用程序中使用互操作库做到这一点。我们如何为AUTOCAD和Photoshop这样的应用程序做同样的事情?

监视一个特定的文件闭包c#

尝试使用FileSystemWatcher's 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);

在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

或者您可以使用数据库。SaveComplete事件

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

对于AutoCAD,使用FileSystemWatcher监视正在创建和删除的。dwl文件。该文件包含有关谁在何时打开该文件的元数据。当文件关闭并释放锁时,它将被删除。后来的版本也有一个.dwl2文件。注意事项-如果AutoCAD崩溃,它可能会被抛在后面。

我不记得它是否是在文件以只读状态打开时创建的,但在这种情况下,无论如何都不需要同步它。