COM Add-Ins and Apartments

Do you have to initialize COM in each new thread that is launched inside of an In-proc server?  I know that this has to be done client side.

Each new thread in the dll server will be accessing the COM object via the GIT, and my threading model is STA.

It's a little puzzling to me since I know I don't have to initialize COM in a dll server since it's threading model is set in the registry.

However, when I launch a new thread, I don't know if this new thread will automatically enter an Apartment.  Given that you can sometimes not follow COM rules and still have your code work correctly; I also know that if you don't follow Good programming practices, you will pay for it later, even if you think you're getting away with it now.

Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Wherever / whenever you create a thread, if it is going to make any COM calls, you need to CoInit that thread. MTA threads should also call CoInit per thread, not just STA. That CoInit call is where you set the model for that thread.

If your DLL server is creating background worker threads that won't participate in COM in any way, they don't need CoInit calls.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Visual C++.NET

From novice to tech pro — start learning today.