Garbage collection und IDisposable haben, wenn überhaupt, dann nur indirekt etwas miteinander zu tun.
IDisposable ist ein Weg, um schön einfach, lokal begrenzt, ein Objekt benutzen und aufräumen zu können.
Es ist dann noch nicht freigegeben, aber es konnte selbst Dinge freigeben, die die GC nicht verwaltet.
Was du willst könnte ein Finalizer sein, also Code, der ausgeführt wird wenn eine Instanz freigegeben wird.
Da Finalizer einem GC Sweep signifikant mehr Arbeit aufhalsen, wäre eine Verwendung von IDisposable/using anzuraten.
Du kannst natürlich zur Sicherheit auch einen Finalizer schreiben, der aufräumt, falls der Benutzer deiner Klasse keine Ahnung hat wofür IDisposable gut ist.
In dem Fall solltest du aber im Dispose GC.SuppressFinalizer(this) aufrufen. Dadurch spart man sich den Finalizer bei einem GC Sweep.
Sollte aber alles in den .Net-Docs zu IDisposable noch ausführlicher zu lesen sein.