___ qstnhdr ___ TThread und COM - "CoInitialize wurde nicht aufgerufen", obwohl CoInitialize im Konstruktor aufgerufen wird
___ tag123multithreading ___ Multi-Threading ist die Fähigkeit eines Computers oder eines Programms, Arbeit gleichzeitig oder asynchron auszuführen, indem mehrere gleichzeitige Ausführungsströme (im Allgemeinen als Threads bezeichnet) verwendet werden.
___ tag123com ___ Das Component Object Model (COM) ist eine Komponententechnologie von Microsoft mit Remoting, Sprachunabhängigkeit und interface-basierter Programmierung.
Bei Fragen zum seriellen COM-Port sollten Sie stattdessen das [serial-port] -Tag verwenden.
___ tag123ole ___ OLE-Automatisierung ist ein prozessübergreifender Kommunikationsmechanismus, der auf dem Component Object Model (COM) basiert.
___ answer38962486 ___
%code% initialisiert COM für den ausführenden Thread. Der Konstruktor einer Instanz %code% wird im Thread ausgeführt, der die Instanz %code% erstellt. Der Code in der Methode %code% wird im neuen Thread ausgeführt.
Dies bedeutet, dass Sie, wenn Sie Ihren %code% -Thread für die Initialisierung von COM benötigen, %code% in der Methode %code% aufrufen müssen. Oder eine Methode, die von %code% aufgerufen wird. Folgendes ist richtig:
%Vor%
___ tag123thread ___ hilf uns dieses Wiki zu bearbeiten
___ tag123delphi ___ Delphi ist eine Sprache für die schnelle Entwicklung von nativen Windows-, macOS-, Linux-, iOS- und Android-Anwendungen mithilfe von Object Pascal. Der Name bezieht sich sowohl auf die Delphi-Sprache als auch auf deren Bibliotheken, Compiler und IDE, mit denen Delphi-Projekte bearbeitet und debuggt werden können.
___ qstntxt ___
Ich versuche COM-Schnittstelle innerhalb eines Threads zu verwenden. Nach dem, was ich gelesen habe, muss ich %code% 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.
___