MDA disconnectedContextdisconnectedContext MDA

L'assistente al debug gestito disconnectedContext è attivato quando CLR tenta la transizione a un apartment o contesto disconnesso durante la gestione di una richiesta relativa a un oggetto COM.The disconnectedContext managed debugging assistant (MDA) is activated when the CLR attempts to transition into a disconnected apartment or context while servicing a request concerning a COM object.

SintomiSymptoms

Le chiamate effettuate a un Runtime Callable Wrapper (RCW) sono recapitate al componente COM sottostante nell'apartment o contesto corrente invece che a quello in cui si trovano.Calls made on a Runtime Callable Wrapper (RCW) are delivered to the underlying COM component in the current apartment or context instead of the one in which they exist. Ciò può provocare il danneggiamento o la perdita di dati, se il componente COM non è a thread multipli, ad esempio nel caso di componenti di tipo apartment a thread singolo.This can cause corruption and or data loss if the COM component is not multithreaded, as in the case of single-threaded apartment (STA) components. In alternativa, se l'oggetto RCW stesso è un proxy, la chiamata potrebbe provocare la generazione di un'eccezione COMException con HRESULT di tipo RPC_E_WRONG_THREAD.Alternatively, if the RCW is itself a proxy, the call might result in the throwing of a COMException with an HRESULT of RPC_E_WRONG_THREAD.

CausaCause

L'apartment o contesto OLE è stato arrestato quando CLR ha tentato di eseguirvi la transizione.The OLE apartment or context has been shut down when the CLR attempts to transition into it. Nella maggior parte dei casi, ciò è dovuto dall'arresto di apartment STA prima del rilascio completo di tutti i componenti COM di proprietà dell'apartment. Questo può essere il risultato di una chiamata esplicita da codice utente a un oggetto RCW oppure può verificarsi quando CLR sta modificando il componente COM, ad esempio quando CLR rilascia il componente COM dopo che l'oggetto RCW associato è stato sottoposto a Garbage Collection.This is most commonly caused by STA apartments being shut down before all the COM components owned by the apartment were completely released This can occur as a result of an explicit call from user code on an RCW or while the CLR itself is manipulating the COM component, for example when the CLR is releasing the COM component when the associated RCW has been garbage collected.

RisoluzioneResolution

Per evitare questo problema, assicurarsi che il thread proprietario dell'apartment STA non termini prima che l'applicazione abbia completato le operazioni relative a tutti gli oggetti presenti nell'apartment.To avoid this problem, ensure the thread that owns the STA does not terminate before the application has finished with all the objects that live in the apartment. Anche nel caso dei contesti, è necessario assicurarsi che non siano arrestati prima che l'applicazione abbia completato le operazioni relative a tutti i componenti COM presenti nel contesto.The same applies to contexts; ensure contexts are not shut down before the application is completely finished with any COM components that live inside the context.

Effetto sull'ambiente di esecuzioneEffect on the Runtime

L'assistente al debug gestito non ha alcun effetto su CLR.This MDA has no effect on the CLR. Fornisce solo dati sul contesto disconnesso.It only reports data about the disconnected context.

OutputOutput

Fornisce il cookie del contesto dell'apartment o del contesto disconnesso.Reports the context cookie of the disconnected apartment or context.

ConfigurazioneConfiguration

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

Vedere ancheSee Also

MarshalAsAttribute
Diagnostica degli errori tramite gli assistenti al debug gestitoDiagnosing Errors with Managed Debugging Assistants
Marshalling di interoperabilitàInterop Marshaling