Wednesday, March 4, 2015

Difference between Dispose and Finalize Method in C# with Example

Introduction:

Here I will explain 
difference between dispose and finalize methods in C#, VB.Net with example

OR

dispose() vs finalize() methods in ASP.Net

OR

use of dispose and finalize methods in ASP.Net
using C# with example. 
Generally we will use dispose and finalize methods to destroy unmanaged objects.

Description:

In previous posts I explained many articles about various concepts.
Now I will explain difference between dispose and finalize methods in  C#  with example.

Dispose() Method
     -  This dispose method will be used to free unmanaged resources like files, database connection etc.
     -  To clear unmanaged resources we need to write code manually to raise dispose() method.
     -  This Dispose() method belongs to IDisposable interface.
     -  If we need to implement this method for any custom classes we need to inherit the class from IDisposable interface.
     -  It will not show any effect on performance of website and we can use this method whenever we want to free objects immediately.
Example
//Implement Dispose Method.
public class TestDispose : IDisposable
{
private bool disposed = false;
//Implement IDisposable.
public void Dispose()
{
Dispose(true);
}
protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
// clean unmanged objects
}
// clean unmanaged objects).
disposed = true;
}
}
}
Finalize() Method
     -  This method also free unmanaged resources like database connections, files etc…
     -  It is automatically raised by garbage collection mechanism whenever the object goes out of scope.
     -  This method belongs to object class.
     -  We need to implement this method whenever we have unmanaged resources in our code and make sure these resources will be freed when garbage collection process done.
     -  It will show effect on performance of website and it will not suitable to free objects immediately.     
Example
// Implementing Finalize method
public class Sample
{
//At runtime destructor automatically Converted to Finalize method.
~Sample()
{
// your clean up code
}
}

No comments:

Post a Comment