We all know the System.IDisposable pattern. It's been described a zillion time, also here on StackOverflow:
link: Dispose() for cleaning up managed resources?
The Disposable patterns advises that I should only dispose managed resources if my object is being disposed, not during finalize
You can see that this happens because the following code is advised:
protected void Dispose(bool disposing)
{
if (disposing)
{
// Code to dispose the managed resources of the class
}
// Code to dispose the un-managed resources of the class
}
I know that my class should implement System.IDisposable whenever my class has a (private) member that implements System.IDisposable. The Dispose(bool) should call the Dispose() of the private member if the boolean disposing is true.
Why would it be a problem if the Dispose would be called during a finalize? So why would the following Dispose be a problem if it is called during finalize?
protected void Dispose(bool disposing)
{
if (myDisposableObject != null)
{
myDisposableObject.Dispose();
myDisposableObject = null;
}
}