Ich versuche COM-Schnittstelle innerhalb eines Threads zu verwenden. Nach dem, was ich gelesen habe, muss ich CoInitialize/CoUninitialize
in jedem Thread aufrufen.
Während dies funktioniert:
%Vor%wenn ich die Aufrufe in Konstruktor und Destruktor verschiebe:
%Vor%Ich bekomme EOleException: CoInitialize wurde nicht Ausnahme aufgerufen und ich habe keine Ahnung warum.
CoInitialize
initialisiert COM für den ausführenden Thread. Der Konstruktor einer Instanz TThread
wird im Thread ausgeführt, der die Instanz TThread
erstellt. Der Code in der Methode Execute
wird im neuen Thread ausgeführt.
Dies bedeutet, dass Sie, wenn Sie Ihren TThreadedJob
-Thread für die Initialisierung von COM benötigen, CoInitialize
in der Methode Execute
aufrufen müssen. Oder eine Methode, die von Execute
aufgerufen wird. Folgendes ist richtig:
Tags und Links multithreading delphi com tthread ole