disconnectedContext MDA
Uwaga
Ten artykuł jest specyficzny dla programu .NET Framework. Nie ma zastosowania do nowszych implementacji platformy .NET, w tym .NET 6 i nowszych wersji.
disconnectedContext
Asystent zarządzanego debugowania (MDA) jest aktywowany, gdy CLR próbuje przejść do odłączonego mieszkania lub kontekstu podczas obsługi żądania dotyczącego obiektu COM.
Objawy
Wywołania wykonywane na otoce wywoływanej środowiska uruchomieniowego (RCW) są dostarczane do bazowego składnika COM w bieżącym mieszkaniu lub kontekście zamiast do tego, w którym istnieją. Może to spowodować uszkodzenie i utratę danych, jeśli składnik COM nie jest wielowątkowy, jak w przypadku składników apartamentów jednowątkowych (STA). Alternatywnie, jeśli RCW jest serwerem proxy, wywołanie COMException może spowodować zgłoszenie elementu z HRESULT RPC_E_WRONG_THREAD.
Przyczyna
Mieszkanie OLE lub kontekst został zamknięty, gdy CLR próbuje przejść do niego. Jest to najczęściej spowodowane tym, że mieszkania STA są zamykane, zanim wszystkie składniki COM należące do mieszkania zostały całkowicie zwolnione To może wystąpić w wyniku jawnego wywołania z kodu użytkownika na RCW lub podczas gdy sam CLR manipuluje składnikiem COM, na przykład gdy CLR zwalnia składnik COM, gdy skojarzony RCW został odśmiecany.
Rozwiązanie
Aby uniknąć tego problemu, upewnij się, że wątek, który jest właścicielem sta, nie kończy się przed zakończeniem aplikacji ze wszystkimi obiektami, które mieszkają w mieszkaniu. To samo dotyczy kontekstów; upewnij się, że konteksty nie są zamykane przed całkowitym zakończeniem działania aplikacji przy użyciu składników COM, które znajdują się w kontekście.
Wpływ na środowisko uruchomieniowe
Ta usługa MDA nie ma wpływu na CLR. Raportuje tylko dane dotyczące rozłączonego kontekstu.
Wyjście
Raportuje plik cookie kontekstu rozłączonego mieszkania lub kontekstu.
Konfigurowanie
<mdaConfig>
<assistants>
<disconnectedContext />
</assistants>
</mdaConfig>