Sdílet prostřednictvím


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

Poznámka:

Tento článek je specifický pro rozhraní .NET Framework. Nevztahuje se na novější implementace .NET, včetně .NET 6 a novějších verzí.

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

Příznaky

Volání za volatelná obálka modulu runtime (RCW) se doručují do podkladové komponenty COM v aktuálním apartmánu nebo kontextu místo do té, ve které existují. To může způsobit poškození a ztrátu dat, pokud komponenta COM není vícevláknová, jako v případě komponent STA (single-threaded apartment). Pokud je analýza RCW sama proxy serverem, může volání způsobit vyvolání COMException hodnoty HRESULT RPC_E_WRONG_THREAD.

Příčina

Při pokusu o přechod do objektu CLR došlo k vypnutí objektu OLE nebo kontextu. To je nejčastěji způsobené vypnutím apartmánů STA předtím, než byly všechny komponenty MODELU COM vlastněné apartmánem zcela uvolněny. K tomu může dojít v důsledku explicitního volání uživatelského kódu ve verzi RCW nebo při manipulaci s komponentou COM samotný CLR, například když CLR uvolní komponentu COM, když je přidružená analýza RCW uvolněna uvolněním paměti.

Rozliš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 vypnuty, než je aplikace zcela dokončena se všemi komponentami MODELU COM, které jsou v kontextu aktivní.

Vliv na modul runtime

Tento mdA nemá žádný vliv na CLR. Hlásí pouze data o odpojeném kontextu.

Výstup

Zaznamenává kontextový soubor cookie odpojeného apartmánu nebo kontextu.

Konfigurace

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

Viz také