title: GC.Collect versus Marshal.ReleaseComObject and RCW
body: <p>I have a COM object reference in my C# that on occasion I require to be discarded by being set to Null then recreated. It seems that there is some caching going on or something that can result in the 'COM object has been seperated from it's underlying RCW' type of error. I got around this by forcing a GC.Collect immediately after setting the object to Null to discard the RCW but this heavy handed and inefficient approach is bad. </p>
  
  <p>I wanted to use Marshal.ReleaseComObject but that just decrements the ref count and the issue remains until the GC actually runs. (Not to mention calling that is also a bad idea in general)</p>
  
  <p>How can I ensure that upon recreation of the COM reference I get a new RCW and everything behaves as it should?</p>