Implement `Dispose` method in C#
I would suggest that you read these pieces from MSDN:

Basic Dispose Pattern, 
 Implementing a Dispose Method

Some things that immediately stand out from your example:


Replace your GC.Collect() with GC.SuppressFinalize(this)
Check your resources aren't null before attempting to dispose them.
Check that your objects haven't already been disposed.


All of this is easily done by following the dispose pattern.