Compartilhar via


disconnectedContext MDA

O disconnectedContext Assistente de depuração gerenciada (MDA) é ativado quando o CLR tenta fazer a transição entre um apartamento desconectado ou o contexto durante a manutenção de uma solicitação relacionadas a um objeto COM.

Sintomas

Chamadas feitas em um Runtime Callable Wrapper (RCW) são entregues ao componente COM base na atual apartment ou contexto em vez em que elas existem. Isso pode causar corrupção e ou perda de dados, se o componente COM não é multithreaded, como no caso dos componentes de single-threaded apartment (STA). Como alternativa, se o RCW é um proxy, a chamada pode fazer o lançamento de um COMException com um HRESULT de RPC_E_WRONG_THREAD.

Causa

O apartamento OLE ou o contexto foi desligado quando o CLR tenta fazer a transição para ele. Isso geralmente é causado por apartments STA, sendo desligado antes de todos os componentes COM pertencentes o apartamento foram completamente liberados, isso pode ocorrer como resultado de uma chamada explícita do código do usuário em um RCW ou enquanto o próprio CLR está manipulando o componente COM, por exemplo, quando o CLR está lançando o componente COM quando o RCW associado tiver sido coletados pelo lixo.

Resolução

Para evitar esse problema, verifique se o segmento que possui o STA não terminar antes que o aplicativo tiver terminado com todos os objetos que vivem no apartamento. O mesmo se aplica aos contextos. Certifique-se de contextos não são encerrados antes do aplicativo está totalmente concluído com quaisquer componentes COM que residem dentro do contexto.

Efeito sobre o tempo de execução.

Este MDA não tem efeito sobre o CLR. Ela somente reporta dados sobre o contexto desconectado.

Saída

Relata o cookie de contexto do apartamento desconectado ou contexto.

Configuração

<mdaConfig>
  <assistants>
    <disconnectedContext enable="false" />
  </assistants>
</mdaConfig>

Consulte também

Referência

MarshalAsAttribute

Conceitos

Diagnosticar erros com assistentes de depuração gerenciada

Interop Marshaling

Outros recursos

Interoperabilidade