Dear list, I wrote a small class which has some COM objects among its attributes. I need to access the object from different threads so I defined two methods to marshal and unmarshal the interfaces when working with the object. Everything seemed to work fine on my PC, never had an error. But I distributed the module to a user and I have been told that after a few threads successfully exiting (can be two or hundreds...) something goes wrong in "unMarshal" and Exception occurred ((-2147022986, 'Der angegebene Objektexporter wurde nicht gefunden.', None, None)) is reported (it took me a while to figure out that this is: 0x00000776 - 1910 The object exporter specified was not found). Then, but that's obvious, I get Exception occurred ((-2147417827, 'Das Schnittstellendatenpaket (Marshall/OBJREF) hat ein ungültiges oder unbekanntes Format.', None, None)) when I try to marshal (unknown or invalid format).
Since I cannot reproduce the exception I was not able neither to locate exactly where the exception occurs, nor to find the reason (the only difference is that I am administrator on my machine and he is not). Before modifying the code to deal with the exception, (here's the request for help) I would need help to figure out if I am doing things the wrong way with threads (I am new to COM and not a software developer) or such exceptions 'just occurs sometimes'. Thanks, Mauro <code> class AppInterface(object): def __init__(self): self.fmApp = win32com.client.Dispatch("Whatever.Application") self.fmProject = self.fmApp.Project("Newproject") def marshal(self): self.fmAppStream = pythoncom.CoMarshalInterThreadInterfaceInStream( pythoncom.IID_IDispatch, self.fmApp._oleobj_) self.fmProjectStream = pythoncom.CoMarshalInterThreadInterfaceInStream(pythoncom.IID_IDispatch, self.fmProject._oleobj_) def unMarshal(self): idispatch = pythoncom.CoGetInterfaceAndReleaseStream( self.fmAppStream, pythoncom.IID_IDispatch) self.fmApp = win32com.client.Dispatch(idispatch) idispatch = pythoncom.CoGetInterfaceAndReleaseStream( self.fmProjectStream, pythoncom.IID_IDispatch) self.fmProject = win32com.client.Dispatch(idispatch) </code>
_______________________________________________ python-win32 mailing list python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32