Ersteres initialisiert COM auf eine Weise, die den aufrufenden Thread in einem eigenen single-threaded Apartment (STA) versetzt. Letzteres initialisiert COM auf eine Weise, die den aufrufenden Thread in einem freigegebenen Multithread-Apartment (MTA) platziert. Die beiden Apartments haben eine sehr unterschiedliche Semantik, insbesondere beim Zugriff auf COM-Objekte über Threadgrenzen hinweg. Threads in verschiedenen Apartments müssen Proxys für die gemeinsame Nutzung von COM-Objekten verwenden, aber COM stellt die Synchronisierung für Sie bereit (über Nachrichtenwarteschlangen pro Thread). Threads in derselben Wohnung können COM-Objekte ohne Proxies teilen, müssen sich jedoch manuell synchronisieren, z. B. mit kritischen Abschnitten oder Mutexen.
Also ja, es gibt einen Unterschied und es kann sehr bedeutsam sein. Bitte lesen Sie die Dokumentation auf MSDN, es ist sehr detailliert.
CoInitialize function
CoInitializeEx function
Processes, Threads, and Apartments
Haben Sie die Dokumentation auf 'CoInitialize'? –
ja ich tat aber es ist nicht klar – user382591
Vielleicht könnten Sie näher erläutern, auf welchem Teil der Dokumentation Sie kämpfen. –