HHK*_*HHK 2 .net c# filesystemwatcher
考虑以下代码:
string dir = Environment.CurrentDirectory + @"\a";
Directory.CreateDirectory(dir);
FileSystemWatcher watcher = new FileSystemWatcher(dir);
watcher.IncludeSubdirectories = false;
watcher.EnableRaisingEvents = true;
Console.WriteLine("Deleting " + dir);
Directory.Delete(dir, true);
if (Directory.Exists(dir))
{
Console.WriteLine("Getting dirs of " + dir);
Directory.GetDirectories(dir);
}
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
有趣的是,这会抛出一个UnauthorizedAccessException Directory.GetDirectories(dir).
删除监视的目录会返回而不会出现错误,但Directory.Exists()仍然返回true并且仍然列出该目录.此外,访问目录会为任何程序产生"拒绝访问".一旦带有FileSystemWatcher的.NET应用程序退出目录就消失了.
如何在仍允许正确删除目录的同时观看目录?
你确实删除了该目录.但是,在关闭引用它的最后一个句柄之前,不会从文件系统中物理删除该目录.任何在中间打开它的尝试(就像你使用GetDirectories一样)都将失败并出现拒绝访问错误.
文件存在相同的机制.查看FileShare.Delete
| 归档时间: |
|
| 查看次数: |
1247 次 |
| 最近记录: |