C#:filesystemwatcher类

时间:2011-11-07 14:57:24

标签: c# filesystemwatcher access-control

我有一个关于filesystemwatcher类上的移动文件事件的问题,我想停止移动文件或在某个文件出现移动文件事件时编辑它,是否可以在移动事件中处理?

3 个答案:

答案 0 :(得分:2)

不,没有办法阻止某人使用FileSystemWatcher类移动或重命名文件。

如果你看一下,FileSystemWatcher类上的事件传递的事件参数都没有Cancel属性。此外,该类简称为Watcher的事实是一个线索。

您可以考虑使用访问控制列表来确保某人无法删除文件(因为移动实际上只是一个复制/删除)。或者您可以尝试在文件上打开FileStream,以便锁定它。

答案 1 :(得分:2)

您不能通过事件处理程序直接“取消”操作。您必须提供补偿操作,以编程方式“撤消”您想要撤消的任何更改。

答案 2 :(得分:1)

您只会在事件发生后收到事件。这只是一个通知,而不是您必须批准的事件。这也可以从FileSystemEventArgs(而不是KeyEventArgs)类中缺少的取消或处理属性中猜出。

您可以根据收到的RenamedEventArgsOldFullPath属性检测移动并尝试移回文件。

但这可能会让您的用户或其他软件感到困惑。并且尽量不要在无限循环中结束,每次收到事件时都会来回移动文件。