Ich habe gerade ein massives Verständnisproblem was
Coinitialize / CoinitializeEx betrifft: wann verwendet man was.
Hier mal die Situation: ich habe eine
VCL Anwendung, die auf die die Microsoft InkOverlay Klasse via
COM zugreift. Zudem erzeugt die Anwendung gelegentlich eine Art Wächterthread, der nachschaut, ob dieses Objekt noch Daten aufnimmt. Dazu wird eine Referenz auf das Objekt mitgegeben, das selbst wiederum die Referenz auf das
COM Objekt enthält. Von dieser Art Wächterthread können durchaus auch mehrere gleichzeitig aktiv laufen.
Soweit ich es nun bisher verstanden habe, muß sowohl die Anwendung selbst als auch jeder meiner Wächter-Threads
Coinitialize(Ex) aufrufen. Aber: reicht hier nun das einfache
Coinitialize oder sollte es CoinitializeEx(nil, COINIT_MULTITHREADED) sein?
Das InkOverlay selbst kann laut Doku sowohl in einem multithreaded als auch einem singelthreaded appartment laufen.
Irgendwie blick ich hier nun leider gar nicht mehr durch, was ich nun verwenden soll. Im Moment verwende ich
Coinitialize aber da manche Kunden sehr seltsame Hänger melden wo das InkOverlay auf irgendetwas wartet ...
Danke,
Uli