0

当使用 EnumerateFiles 或 GetFiles 或 GetDirectories 之类的 .NET Directory 类方法时,我假设它们持有非托管句柄。那个把手是怎么释放的?他们在使用 IDispose 吗?我的意思是有手柄泄漏的可能性吗?

4

2 回答 2

1

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

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

于 2012-07-12T08:59:58.150 回答
0

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

总是有可能的,但是这些类已经在许多生产系统中使用并且经过了彻底的测试——它们没有泄漏。

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

于 2012-07-12T09:00:30.097 回答