VC++ ATL/COM - Step 3.1 Adding a COM Interface - Threading Model
3.1 Threading Model
Single: Specifies that the object always runs in the primary COM thread. STA and COM InprocServer32 will come under this category.
Apartment: It is a single thread apartment and is tied to a specific thread and has a Windows message pump (default).
Both: (both STA and MTA)
Specifies that the object can use STA(single thread apartment) or MTA (Mutli-thread apartment ) model
Free: (MTA)
Specifies that the object uses free threading equivalent to a multithread apartment model.
Now look at the code created for MathControl Object
class ATL_NO_VTABLE CMathControl :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CMathControl, &CLSID_MathControl>,
public IDispatchImpl<IMathControl, &IID_IMathControl,
&LIBID_SFTComServerLib, 1, 0>
From the above, we know the it uses STA - CComSingleThreadModel. If we have chosen Free threading model, then you can find the class with CComMultiThreadModel.
Click here to download the complete source code of COM DLL Server, C++ Client and CSharp Client
|