2011-11-07 36 views
0

我有一個關於filesystemwatcher類上的移動文件事件的問題,我想停止移動文件或編輯它,當移動文件事件出現某個文件時,是否可以在內部處理移動事件?C#:filesystemwatcher類

回答

2

不,沒有辦法阻止某人使用FileSystemWatcher類來移動或重命名文件。

如果你看一下,沒有通過FileSystemWatcher類的事件傳遞的事件參數有Cancel財產。此外,這個類只是一個觀察者的事實是有點線索。

你可能會考慮使用訪問控制列表,以確保有人無法刪除文件(因爲此舉實際上只是一個拷貝/刪除)。或者,也許你可以嘗試在文件上打開FileStream,以便鎖定它。

2

您不能通過事件處理程序直接「取消」操作。您將不得不提供補償操作,以編程方式「撤銷」您想撤消的任何更改。

1

您只收到事件發生後的事件。這僅僅是一個通知,而不是你必須批准的事件。這也可以從FileSystemEventArgs(相對於KeyEventArgs)類中丟失的Cancel或Handled屬性中猜出。

根據您收到的RenamedEventArgsOldFullPath屬性,您可以檢測到移動並嘗試移回文件。

這可能會讓您的用戶或其他軟件感到困惑。並且儘量不要以無限循環結束,您每次接收事件時都要前後移動文件。