Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi CoInitializationEx in einer Anwendung mehrfach aufrufen... (https://www.delphipraxis.net/139925-coinitializationex-einer-anwendung-mehrfach-aufrufen.html)

ChrisE 8. Sep 2009 16:47


CoInitializationEx in einer Anwendung mehrfach aufrufen...
 
Hallo,

in diesem Thread habe ich bereits das Problem beschrieben, dass ich einen TOleServer / COM-Objekt in einem Thread-Modus bringen möchte. Das klappt ja auch soweit in einer Beispielanwendung mit.

Delphi-Quellcode:
initialization
  CoInitializeEx(nil, COINIT_MULTITHREADED); // Neu für Multithreading
finalization
  CoUninitialize;
Aber das Problem ist jetzt das in unserem Projekt mehrere COM-Objekts etc. verwendet werden. Alle die ich verwende benötigen Single Thread Apartment. Wie bekomme ich es jetzt hin, diesen einen Ole-Server mit dem Multi Thread Apartment zu starten?

Die MSDN sagt dazu, dass man es für einen Thread nur einmal setzten kann
Zitat:

Multiple calls to CoInitializeEx by the same thread are allowed as long as they pass the same concurrency flag...
Meinen die jetzt den Thread im Sinne von TThread oder meinen die die ganze Applikation?
Und wenn sie den Thread meinen, wie schaffe ich es einem TThread einen COM-Server einzubauen und MessageLoop und und und :evil: ?

Es ist mir klar, dass dies viele Fragen sind. Danke für Eure Hilfe.

Gruß, ChrisE

generic 8. Sep 2009 16:49

Re: CoInitializationEx in einer Anwendung mehrfach aufrufen.
 
Du sollst in jeden TThread das CoInitialize einmalig aufrufen z.B. im Execute.

ChrisE 8. Sep 2009 18:02

Re: CoInitializationEx in einer Anwendung mehrfach aufrufen.
 
Zitat:

Zitat von generic
Du sollst in jeden TThread das CoInitialize einmalig aufrufen z.B. im Execute.

:wall: :wall: :wall:

Manchmal ist man wirklich wie vor den Kopf gestoßen. Ich hatte CoInitialize im Create aufgerufen. Aber das ist ja noch im Kontext der Applikation.

DANKE! :dp:

Gruß, Chris


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz