disconnectedContext MDA

Note

Dieser Artikel ist spezifisch für .NET Framework. Sie gilt nicht für neuere Implementierungen von .NET, einschließlich .NET 6 und höherer Versionen.

Der disconnectedContext verwaltete Debugging-Assistent (Managed Debugging Assistant, MDA) wird aktiviert, wenn der CLR versucht, zu einer getrennten Wohnung oder einem getrennten Kontext zu wechseln, während eine Anforderung für ein COM-Objekt gewartet wird.

Symptome

Aufrufe an einen Runtime Callable Wrapper (RCW) werden an die zugrunde liegende COM-Komponente in der aktuellen Wohnung oder im aktuellen Kontext statt an die komponente übermittelt, in der sie vorhanden sind. Dies kann zu Beschädigungen und oder Datenverlusten führen, wenn die COM-Komponente nicht multithreaded ist, wie bei Einzelthread-Apartmentkomponenten (STA). Wenn der RCW selbst ein Proxy ist, kann der Aufruf dazu führen, dass ein COMException HRESULT von RPC_E_WRONG_THREAD ausgelöst wird.

Ursache

Die OLE-Wohnung oder der Kontext wurde heruntergefahren, wenn die CLR versucht, in sie zu wechseln. Dies wird am häufigsten dadurch verursacht, dass STA-Wohnungen heruntergefahren werden, bevor alle COM-Komponenten im Besitz der Wohnung vollständig freigegeben wurden. Dies kann aufgrund eines expliziten Aufrufs von Benutzercode auf einem RCW oder während die CLR selbst die COM-Komponente bearbeitet, z. B. wenn die CLR die COM-Komponente freigibt, wenn die zugeordnete RCW garbage gesammelt wurde.

Auflösung

Um dieses Problem zu vermeiden, stellen Sie sicher, dass der Thread, der das STA besitzt, nicht beendet wird, bevor die Anwendung mit allen Objekten fertig ist, die in der Wohnung leben. Gleiches gilt für Kontexte; Stellen Sie sicher, dass Kontexte nicht heruntergefahren werden, bevor die Anwendung vollständig mit allen COM-Komponenten fertig ist, die sich im Kontext befinden.

Effekt auf die Laufzeit

Diese MDA hat keine Auswirkungen auf die CLR. Es meldet nur Daten über den getrennten Kontext.

Output

Meldet das Kontextcookies der getrennten Wohnung oder des Kontexts.

Konfiguration

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

Siehe auch