In .Net, the Runtime Callable Wraper (RCW) does not implement IDisposable. So you cannot call Dispose() to free a COM object. COM object would be freed until it is garbage collected.
Fortunately, it is possible to call System.Runtime.InteropServices.Marshal.ReleaseComObject() to release a COM object.