Le risorse di solito vengono restituite al sistema quando il processo termina, non quando uno dei suoi thread lo fa.
Tuttavia, CoUninitialize() non solo libera risorse e scarica DLL, ma immette anche un ciclo di messaggi modali per pompare i restanti messaggi COM prima che il thread termini. La documentazione dice:
Se non ci sono le conversazioni aperte rimanenti, CoUninitialize
inizia un ciclo di messaggi modale e invia messaggi in sospeso dalle contenitori o del server per questa applicazione COM. Inviando i messaggi , CoUninitialize
assicura che l'applicazione non esca prima di ricevere tutti i messaggi in sospeso. I messaggi non COM sono scartati .
Pertanto, al fine di evitare errori RPC dalla parte dei chiamanti, vi consiglio di seguire i consigli del documentazione e chiami sempre CoUninitialize()
prima di terminare le discussioni che hanno chiamato CoInitializeEx()
.
fonte
2011-11-08 17:34:06
Anche se non è importante farlo, perché non li accoppi? –
Perché il codice è già in fase di test, e preferirei non cambiarlo se la modifica è irrilevante, ma il punto è preso. – jeffm