Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Note
Este artículo es específico de .NET Framework. No se aplica a implementaciones más recientes de .NET, incluidas .NET 6 y versiones posteriores.
El gcManagedToUnmanaged Asistente para depuración administrada (MDA) provoca una recolección de elementos no utilizados cada vez que un subproceso pasa de administrado a código no administrado.
Síntomas
Un componente de usuario no administrado produce una infracción de acceso al intentar usar un objeto administrado que se había expuesto a COM. Parece que se ha liberado el objeto COM. La infracción de acceso no es determinista.
Causa
Si un componente no administrado no hace referencia al recuento correcto de un objeto COM administrado, el tiempo de ejecución podría recopilar un objeto administrado expuesto a COM cuando el componente no administrado todavía contiene una referencia al objeto . El tiempo de ejecución llama Release durante las recolecciones de elementos no utilizados, por lo que si el componente de usuario usa el objeto antes de que se produzca la recolección de elementos no utilizados, aún no se habrá recopilado. Esta es la fuente del no determinismo.
Resolución
Al habilitar este asistente, se reduce el tiempo entre el momento en que el objeto es apto para la colección y Release se llama a , lo que ayuda a realizar un seguimiento del componente no administrado que intenta acceder primero al objeto recopilado.
Efecto en el tiempo de ejecución
Provoca una recolección de elementos no utilizados cada vez que un subproceso pasa de un código administrado a no administrado.
Output
Este MDA no genera ninguna salida.
Configuration
<mdaConfig>
<assistants>
<gcManagedToUnmanaged/>
</assistants>
</mdaConfig>