Strange thing about .NET 4.0 filesystem enumeration functionality
- by codymanix
I just read a page of "Whats new .NET Framework 4.0". I have trouble understanding the last paragraph:
To remove open handles on enumerated directories or files
Create a custom method (or function in Visual Basic) to contain
your enumeration code.
Apply the MethodImplAttribute attribute with the NoInlining option
to the new method. For example:
[MethodImplAttribute(MethodImplOptions.NoInlining)]
Private void Enumerate()
Include the following method calls, to run after your enumeration
code:
* The GC.Collect() method (no parameters).
* The GC.WaitForPendingFinalizers() method.
Why the attribute NoInlining? What harm would inlining do here?
Why call the garbage collector manually, why not making the enumerator implement IDisposable in the first place? I suspect they use FindFirstFile()/FindNextFile() API calls for the imlementation, so FindClose() has to be called in any case if the enumeration is done.