disconnectedContext MDA

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 disconnectedContext asistente de depuración administrada (MDA) se activa cuando CLR intenta realizar la transición a un apartamento o contexto desconectado mientras se mantiene una solicitud relativa a un objeto COM.

Síntomas

Las llamadas realizadas en un contenedor invocable en tiempo de ejecución (RCW) se entregan al componente COM subyacente en el apartamento o contexto actual en lugar del que existen. Esto puede causar daños o pérdida de datos si el componente COM no es multiproceso, como en el caso de componentes de apartamento de un solo subproceso (STA). Como alternativa, si el RCW es en sí mismo un proxy, la llamada podría dar lugar a la iniciación de un COMException con un HRESULT de RPC_E_WRONG_THREAD.

Causa

El contexto o el apartamento OLE se han cerrado cuando CLR intenta realizar la transición a él. Esto suele deberse a que los apartamentos STA se apagan antes de que todos los componentes COM propiedad del apartamento se liberaran completamente Esto puede ocurrir como resultado de una llamada explícita desde el código de usuario en un RCW o mientras CLR está manipulando el componente COM, por ejemplo, cuando CLR libera el componente COM cuando el RCW asociado se ha recolección de elementos no utilizados.

Resolución

Para evitar este problema, asegúrese de que el subproceso propietario del STA no finaliza antes de que la aplicación haya terminado con todos los objetos que residen en el apartamento. Lo mismo se aplica a los contextos; asegúrese de que los contextos no se apaguen antes de que la aplicación finalice completamente con los componentes COM que residen dentro del contexto.

Efecto en el tiempo de ejecución

Este MDA no tiene ningún efecto en clR. Solo notifica datos sobre el contexto desconectado.

Output

Informa de la cookie de contexto del apartamento o el contexto desconectados.

Configuration

<mdaConfig>
  <assistants>
    <disconnectedContext />
  </assistants>
</mdaConfig>

Consulte también