FileSystemWatcher锁定文件夹

时间:2015-01-29 21:07:02

标签: c# .net winforms filesystemwatcher

在下面回答。我既不能删除这个问题,也不能接受我的答案。

我有FileSystemWatcher监听文件夹。当我尝试重命名此文件夹时(在Windows资源管理器中),我得到了一个

  

操作无法完成,因为文件夹或其中的文件是   在另一个程序中打开

错误。

评论FileSystemWatcher次来电可以解决这个问题。

我尝试用一​​个简单的程序重现错误,但还没有成功,所以我不确定这里发生了什么。有没有人遇到FileSystemWatcher这样的事情?如果是这样 - 可能是什么导致它?

更多信息:

以下似乎足以导致错误:

FileSystemWatcher fsw = new FileSystemWatcher(path);
fsw.Deleted += new FileSystemEventHandler(fsw_Deleted);
fsw.EnableRaisingEvents = true;

可以重命名该文件夹中的文件。和兄弟文件。我甚至尝试将return;作为fsw_Deleted中的第一行。仍然没有工作。由于没有关闭Visual Studio,删除obj和bin,然后再次运行。我甚至尝试不在VS中运行exe文件。仍然 - 没有锁定,如果它没有运行,如果它是锁定。

2 个答案:

答案 0 :(得分:4)

我发现了导致这种情况的原因。在第一个子目录中有第二个FileSystemWatcher - 它不允许重命名第一个。

(我仍然感到惊讶。FileSystemWatcher 应该<&#34;隐身&#34;。)

答案 1 :(得分:0)

它会这样做,因为你的进程正在寻找该文件夹中的文件。您可能想要做的是为fsw.Rename添加一个处理程序。然后在该过程中,您应该在查找新文件时执行RemoveHandler,然后使用文件夹的新名称将其重新添加。