当使用 EnumerateFiles 或 GetFiles 或 GetDirectories 之类的 .NET Directory 类方法时,我假设它们持有非托管句柄。那个把手是怎么释放的?他们在使用 IDispose 吗?我的意思是有手柄泄漏的可能性吗?
问问题
108 次
2 回答
1
不,Directory
不实现IDisposable
,实际上它的所有方法都是静态的。非托管句柄的释放必须在每个方法中 - 如果您真的想看到更多,请尝试使用 Reflector 之类的东西来查看它。
事实上,如果你这样做,你会发现一个名为 的内部类FileSystemEnumerableIterator<T>
,它确实实现IDisposable
并且它的Dispose
方法关闭了句柄。
于 2012-07-12T08:59:58.150 回答
0
我的意思是有手柄泄漏的可能性吗?
总是有可能的,但是这些类已经在许多生产系统中使用并且经过了彻底的测试——它们没有泄漏。
如果您想知道它们是如何实现的 - 使用 ILSpy 或 Reflector 之类的反汇编程序来查看它是如何完成的。
于 2012-07-12T09:00:30.097 回答