Pregunta

Estoy trabajando mi camino a través de aprender a escribir un control COM. Tengo un proyecto de ejemplo, y utiliza las líneas

_pAtlModule->Lock()
_pAtlModule->Unlock()

en el controlador OnCreate () y el controlador de OnDestroy () para el control COM respectivamente.

Me doy cuenta de que el _pAtlModule es una instancia de la CAtlModule - el objeto "aplicación" (a falta de una mejor descripción)

.

Pero a mi pregunta. ¿Qué hace exactamente _pAtlModule-> Bloqueo de bloqueo ()? Sé que es una sección crítica, pero ¿qué es lo protege?

¿Debo bloquear y desbloquear el objeto _pAtlModule al escribir mis controles COM?

Gracias!

¿Fue útil?

Solución

En el outsude, que en realidad no parece hacer nada sustancial!

MSDN dice "Aumenta el recuento de bloqueo y devuelve el valor actualizado, lo que puede ser útil para depurar y rastreo".

http://msdn.microsoft .com / en-US / library / 9syc2105% 28v = VS.80% 29.aspx

creo que esto es engañoso, sin embargo, el comportamiento está pensado para detener el módulo se descargue. Mi teoría es que es algún valor atómico que se utiliza como ancla de bloqueo (a falta de un término mejor!).

Otros consejos

esta respuesta a una pregunta similar Esta función es para la gestión de la llamada 'contador de bloqueos' de la DLL de servidor COM en proceso. Junto con los DllCanUloadNow() impide recuento de bloqueo de la DLL de ser descargada hasta que su código y datos no sirve de nada más.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top