COM and Threads

Roger Upole rupole at hotmail.com
Fri Oct 13 01:37:34 EDT 2006


"Teja" <tejovathi.p at gmail.com> wrote:
>
> Roger Upole wrote:
>
>> "Teja" <tejovathi.p at gmail.com> wrote:
>> >I have an application which uses COM 's Dispatch to create a COM based
>> > object. Now I need to upgrade the application to a threaded one. But
>> > its giving an error that COM and threads wont go together. Specifically
>> > its an attribute error at the point where COM object is invoked. Any
>> > pointers please??????
>> >
>>
>> An actual traceback would help.
>> At a guess, when using COM in a thread
>> you need to call pythoncom.CoInitialize and
>> CoUninitialize yourself.
>>
>>      Roger
>
> Actually Roger, this is the scenario....
>
> I create a COM object at the beginnning of the main thread. In the sub
> thread, I need to access the same instance of the COM object. If it
> were a normal object ie. not a COM obj, i was able to do it. But if it
> were a COM object, its giving an attribute error? Should I pass a COM
> object to the thread. If so How? Please let me know ASAP... Thnks
>

To pass COM objects between threads, usually they'll need to be marshaled
using pythoncom.CoMarshalInterThreadInterfaceInStream, and unmarshaled
with pythoncom.CoGetInterfaceAndReleaseStream.

         Roger






More information about the Python-list mailing list