Because the interface ISts is the default interface for the Sts coclass and no other coclass implements it. In this case, I guess the importer chooses the interface it once saw as the default for some coclass and implemented by no other....
c#,com,async-await,activex,rcw
This is pretty normal, COM will pump when the call crosses an apartment boundary. It has to pump, not doing so is very likely to cause deadlock. It is unclear why that boundary has to be crossed from the snippet, it looks like an STA thread when you talk about...
These are property accessor methods. A compiler that uses the COM server is expected to generate a call to get_Xxx() when the client program reads the property, put_Xxx() when it writes it. A special one that C# doesn't have at all is putref_Xxx(), used to unambiguously access an object instead...
c#,.net,com,garbage-collection,rcw
No, It's not possible, you can only force a garbage collector to run but you can not force it to work according to your logic. For more information on garbage collector please read this: https://msdn.microsoft.com/en-us/library/ee787088(v=vs.110).aspx Also GC is a static class, we can't override any of it's method :(...