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