Garbage Collection Basics:

When are the objects GCed?

When the garbage collector finds objects that can be reclaimed, it checks each object to determine the object's finalization requirements. If an object implements a finalizer and has not disabled finalization by calling SuppressFinalize, the object is placed in a list of objects marked as ready for finalization. The garbage collector calls the Finalize methods for the objects in this list and removes the entries from the list. This method blocks until all finalizers have run to completion.

Difference between Dispose(true) and Dispose(false)?
https://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconimplementingdisposemethod.asp

Forcing GarbageCollection
https://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconforcingcollection.asp

Why I need to call WaitForPendingFinalizers?
https://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemGCClassWaitForPendingFinalizersTopic.asp

Suppressing Garbage collection is explained here
https://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemGCClassSuppressFinalizeTopic.asp

Jessica explains all this in one of her articles:
https://www.martnet.com/~jfosler/articles/UsingDispose.htm