You need to dispose all objects that implements IDisposable. That's why they implement IDisposable interface.
GC.SupressFinalize requests that the system not call the finalizer for the specified object. (GC=
Garbage collection) SuppresFinalize should only be called by a class that has a finalizer. It's informing the GC that this object was cleaned up fully.