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 に答える