(Windows API created objects, File, Database connection objects, COM objects, etc.) are outside the scope of .NET Framework. We have to explicitly clean our resources. For these types of objects, .NET Framework provides Object.Finalize method, which can be overridden and clean up code for unmanaged resources...
Why is it preferred to not use finalize for clean up?
What is appropriate to use?