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