Я просто прочитал страницу "Whats new.NET Framework 4.0" . Мне трудно понять последний абзац:
Чтобы удалить открытые дескрипторы в перечисленных каталогах или файлах
Создайте собственный метод (или функцию в Visual Basic), чтобы содержать ваш код перечисления.
Применить атрибут MethodImplAttribute с помощью параметра NoInlining к новому методу. Например:
[MethodImplAttribute(MethodImplOptions.NoInlining)]
Private void Enumerate()
Включить следующие вызовы методов для запуска после перечисления код:
* The GC.Collect() method (no parameters). * The GC.WaitForPendingFinalizers() method.
Почему атрибут NoInlining? Какой вред можно было бы сделать здесь?
Зачем вызывать сборщик мусора вручную, почему бы не сделать, чтобы перечислитель реализовал IDisposable в первую очередь? Я подозреваю, что они используют API-вызовы FindFirstFile()/FindNextFile() API для memlement, поэтому FindClose() нужно вызывать в любом случае, если перечисление выполнено.
EDIT:
У кого-нибудь есть идея, почему в статье предлагается атрибут NoInlining?