Sdílet prostřednictvím


disconnectedContext – pomocník spravovaného ladění (MDA)

Pomocník disconnectedContext spravovaného ladění (MDA) se aktivuje, když se CLR pokusí přejít do odpojeného bytu nebo kontextu při obsluhování požadavku týkajícího se objektu COM.

Příznaky

Volání provedená v modulu RUNTIME Callable Wrapper (RCW) se doručí do podkladové komponenty MODELU COM v aktuálním objektu nebo kontextu namísto toho, ve kterém existují. To může způsobit poškození nebo ztrátu dat, pokud komponenta MODELU COM není vícevláknová, jako v případě komponent s jedním vláknem apartment (STA). Pokud je rcw sám o sobě proxy, volání může vést k vyvolání objektu COMException s HRESULT RPC_E_WRONG_THREAD.

Příčina

Objekt OLE nebo kontext byl při pokusu modulu CLR o přechod na něj vypnut. To je nejčastěji způsobeno sta byty jsou vypnuty před všechny com komponenty vlastněné byt byly zcela uvolněny. K tomu může dojít v důsledku explicitního volání z uživatelského kódu na RCW nebo když CLR sám manipuluje komponentu COM, například když CLR vydává komponentu COM, když byla přidružená RCW uvolněna z paměti.

Řešení

Chcete-li se tomuto problému vyhnout, ujistěte se, že vlákno, které vlastní STA, se neukončí před dokončením aplikace se všemi objekty, které žijí v bytě. Totéž platí pro kontexty; zajistit, aby kontexty nebyly ukončeny před kompletním dokončením aplikace se všemi komponentami modelu COM, které se nacházejí uvnitř kontextu.

Vliv na modul runtime

Tento mda nemá žádný vliv na CLR. Hlásí pouze data týkající se odpojeného kontextu.

Výstup

Hlásí kontextový soubor cookie odpojeného bytu nebo kontextu.

Konfigurace

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

Viz také