当使用.NET目录类方法(如EnumerateFiles或GetFiles或GetDirectories)时,我认为它们会占用非托管句柄。该手柄是如何发布的?他们使用IDispose吗? 我的意思是是否有可能发生手柄泄漏?
答案 0 :(得分:1)
不,Directory
没有实现IDisposable
,实际上它的所有方法都是静态的。释放非托管句柄必须在每个方法中 - 如果你真的想看到更多,请尝试使用像Reflector这样的东西。
实际上,如果你这样做,你会发现一个名为FileSystemEnumerableIterator<T>
的内部类,它实现了IDisposable
并且Dispose
方法关闭了句柄。
答案 1 :(得分:0)
我的意思是手柄有泄漏的可能性吗?
总有的可能性,但这些类已经在许多生产系统中使用并经过全面测试 - 它们没有泄漏。
如果您想知道它们是如何实现的 - 使用像ILSpy或Reflector这样的反汇编程序来查看它是如何完成的。