相关疑难解决方法(0)

C# - 预测文件夹删除时的文件系统事件

这是一个关于实现这一目标的最佳实践的问题.

我有一个FileSystemWatcher应该通知我用户对文件和文件夹的更改.还观察了细分市场.在同一目录中,我的程序有时也会发生变化.我不希望FileSystemWatcher检测这些程序更改的事件.

我的第一个实现是一个列表,我可以添加预期的事件.当我收到文件系统事件时,我检查列表并忽略它,如果它在那里.这听起来不太健壮,但似乎有效.

现在我发现了真正的问题:
D:被观看了FileSystemWatcher.
我有两个这样的文件夹:D:\ folder1\folder2
现在我想用我的应用程序删除folder1(其中包含folder2).所以我把D:\ folder1放在我的删除列表中.然后我打电话给像Directory.Delete(@"D:\folder1", true).现在我注意到在异常中无法删除folder1(为什么有).我从列表中删除了删除条目,但是folder2已被删除,我得到了他的FileSystemEvent.所以我得到了D:\ folder1\folder2的FileSystem事件.我的程序现在认为用户已经删除了这个文件夹并且做错了.

我现在有一些想法:

1.)通过删除每个文件和每个文件夹来递归删除文件夹.有了这个,我得到每个子文件夹并提交一个自己的列表条目.我已经实现了它,但它非常非常慢.

2.)也许有更好的方法FileSystemWatcher来使我的列表过时的聪明的过滤器?

3.)如果可以删除所有内容,也许只能删除目录树.所以如果它失败了我仍然拥有一切,如果不是,一切都被删除.这对我来说似乎是最优雅的解决方案,但不知道这是否可行?

4.)是否可以通过我的软件专门锁定所有文件和文件夹?如果这样就可以了,应该可以用一个删除命令删除所有内容,或者像这样删除?

我也愿意接受其他解决方案.

编辑1以使其更清晰:

我只想"看到"文件夹上的用户操作.如果我在这里操作我的程序中的东西,我不想看到这个事件.

通过我的实现,如果文件夹被锁定且无法删除,我将获得子文件夹的事件.

用英语解释并不容易,因为我不是英语母语者;).

编辑2:

5.)也许可以过滤FileSystemWatcher定义过程中的所有事件?

.net c# filesystemwatcher cascading-deletes

5
推荐指数
1
解决办法
1535
查看次数

标签 统计

.net ×1

c# ×1

cascading-deletes ×1

filesystemwatcher ×1