Ce qui fait qu'il assure CoInitialize
est appelé en précisant COINIT_APARTMENTTHREADED en tant que paramètre. Si vous n'utilisez pas de composants COM ou des contrôles ActiveX, il n'aura aucun effet sur vous. Si vous le faites, il est d'une importance cruciale.
Les contrôles qui sont cloisonné sont effectivement mono-thread, les appels vers eux ne peuvent être traitées que dans l'appartement qu'ils ont été créés.
Un peu plus en détail à partir de MSDN:
Les objets créés dans un seul thread
appartement (STA) de recevoir des appels de méthode
seulement à partir de leur appartement du thread, donc
les appels sont sérialisés et arrivent seulement
au message de la file d'attente des limites (lorsque le
Fonction Win32 PeekMessage ou
SendMessage est appelé).
Les objets créés dans un COM thread dans un
multithread appartement (MTA) doivent être
en mesure de recevoir les appels de méthode d'
d'autres fils à tout moment. Vous
généralement en œuvre une certaine forme de
contrôle de la simultanéité dans un multithread
objet du code à l'aide de Win32
des primitives de synchronisation tels que
les sections critiques, les sémaphores, ou
mutex pour aider à protéger l'objet
les données.
Lorsqu'un objet est configuré pour
exécuter dans le neutre threaded apartment
(NTA) est appelée par un thread qui est en
soit un STA ou le MTA, le thread
les transferts à la NTA. Si ce fil
par la suite des appels CoInitializeEx, l'
appel échoue et renvoie
RPC_E_CHANGED_MODE.