i have a COM Server which exposes a COM interface name "IMyInterface".
it has a lengthy processing COM method (Init )that must be called before any other method calls of this interface.
the problem is COM client's UI freze when Init() is called. i would like to have client responsive. to solve this issue. i return E_PENDING when Init() is called. if Client gets E_PENDING then clients need to Poll another method GetStatus(). if status returns S_OK. they could call other methods.
inside the length processing function (Init()). i created a seperate thread and call the internal function ( say InitEx) by passing "this" as a arguments in the thread function.

but i am quite surprised to see that the Clients Call still blocks. later i came to know that this is because COM serialization and appartment models. my thread call is just a proxy to main thread COM object,

now the problem is the CMyInterface Class has a member variable of internal wrraper class. so if i access its function they will also be serilized. and UI will be frezed.


could some tell me how to fix this.

regards
deepak