COM-Objekt wird nach Thread zerstört..

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
makro
User
Beiträge: 25
Registriert: Sonntag 12. Juli 2009, 08:53

Hallo,

ich habe folgendes Problem. In einem Thread erzeuge ich ein COM-Objekt mittels Dispatch. Das Variable, welches das COM-Objekt zugewiesen wird, ist global. Der Thread wird mit der API-Funktion CreateThread erzeugt. Es ist deswegen in einem Thread, weil die Erzeugung des COM-Objektes länger dauert.

Das ganze sieht etwa so aus:

Code: Alles auswählen


...
import sys as _sys
MeinSkript = _sys.modules[__name__] 
MeinSkript.COMObj = None;

def MeinThread(ThreadArg):

    pythoncom.CoInitialize();
    
   MeinSkript.COMObj = Dispatch(...);

   ....
   return 0;

Man sieht im Task-Manager dass der Prozess erzeugt wird, aber auch nach Erzeugung gleich wieder beendet wird, sobald der Thread auch zuende ist. Mein Frage ist nun, wie kann man aus einem Thread ein übergreifendes COM-Objekt erzeugen, also ein Objekt das auch in einem anderen Thread (im MainThread) gültig ist und nicht gleich wieder zerstört wird?

mfg
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Gib doch das Objekt per return zurück an den Hauptteil. Globale Objekte sind böse (TM).
Wieso nutzt du eine Windows-Api-Funktion zum Erzeugen von Threads?
Python braucht keine ; am Ende einer Zeile. :)
Antworten