Just recently we've got a comment declaring one of our blogs on releasing COM objects "wrong and misleading": the author says Marshal.ReleasingComObject() and related things made him spend "lots of time on writing code that is totally unnecessary" and provides many links supporting the idea that you can use GC.Collect() to get rid of non-released COM objects.