【发布时间】:2011-12-23 16:55:45
【问题描述】:
我对 filesystemwatcher 类上的移动文件事件有疑问,我想在某个文件发生移动文件事件时停止文件移动或编辑它,这可以在移动事件中处理吗?
【问题讨论】:
标签: c# filesystemwatcher access-control
我对 filesystemwatcher 类上的移动文件事件有疑问,我想在某个文件发生移动文件事件时停止文件移动或编辑它,这可以在移动事件中处理吗?
【问题讨论】:
标签: c# filesystemwatcher access-control
只有在事实发生后您才会收到事件。这只是一个通知,而不是您必须批准的事件。这也可以从FileSystemEventArgs(而不是KeyEventArgs)类中缺少的Cancel 或Handled 属性中猜到。
您可以根据收到的RenamedEventArgs 的OldFullPath 属性检测移动并尝试将文件移回。
但是,这可能会让您的用户或其他软件感到困惑。并且尽量不要陷入无限循环,每次收到事件时都要来回移动文件。
【讨论】:
您不能通过事件处理程序直接“取消”操作。您必须提供补偿操作以编程方式“撤消”您想要撤消的任何更改。
【讨论】:
不,没有办法阻止某人使用 FileSystemWatcher 类移动或重命名文件。
如果你看一下,FileSystemWatcher 类上的事件传递的事件参数都没有Cancel 属性。此外,这个类被简单地称为观察者这一事实有点线索。
您可以考虑使用访问控制列表来确保某人无法删除文件(因为移动实际上只是复制/删除)。或者您可以尝试在文件上打开 FileStream 以将其锁定。
【讨论】: