.net目录类必须关闭处理?

时间:2012-07-12 08:57:39

标签: .net

当使用.NET目录类方法(如EnumerateFiles或GetFiles或GetDirectories)时,我认为它们会占用非托管句柄。该手柄是如何发布的?他们使用IDispose吗? 我的意思是是否有可能发生手柄泄漏?

2 个答案:

答案 0 :(得分:1)

不,Directory没有实现IDisposable,实际上它的所有方法都是静态的。释放非托管句柄必须在每个方法中 - 如果你真的想看到更多,请尝试使用像Reflector这样的东西。

实际上,如果你这样做,你会发现一个名为FileSystemEnumerableIterator<T>的内部类,它实现了IDisposable并且Dispose方法关闭了句柄。

答案 1 :(得分:0)

  

我的意思是手柄有泄漏的可能性吗?

总有的可能性,但这些类已经在许多生产系统中使用并经过全面测试 - 它们没有泄漏。

如果您想知道它们是如何实现的 - 使用像ILSpy或Reflector这样的反汇编程序来查看它是如何完成的。