What type of COM apartment is the stream on which you create the object?
If this is the main application thread and you do not note that the main entry point is with STAThreadAttribute , you will work in the MTA. If you use the attribute, your thread will be in the STA. For other threads, you can set the type of apartment using Thread.SetApartmentState before starting the thread.
If your COM object is registered in a different apartment model than you use, you will incur overhead for creating a new stream / apartment, an object created in this other apartment, and all messages that occur through the proxy / stubs instead of direct calls to COM -an object.
This may cause some performance issues.
source share