Freigeben über


gcUnmanagedToManaged-MDA

Der gcUnmanagedToManaged-MDA (Managed Debugging Assistant, Assistent für verwaltetes Debuggen) veranlasst bei jedem Übergang eines Threads von nicht verwaltetem zu verwaltetem Code eine Garbage Collection.

Symptome

Eine Anwendung, die über COM und Plattformaufrufe nicht verwaltete Benutzerkomponenten ausführt, verursacht eine nichtdeterministische Zugriffsverletzung in der CLR.

Ursache

Wenn eine Anwendung nicht verwaltete Benutzerkomponenten ausführt, dann haben diese Komponenten möglicherweise den Heap der Garbage Collection beschädigt. Dies verursacht eine Zugriffsverletzung in der CLR, wenn der Garbage Collector versucht, das Objektdiagramm durchzugehen.

Lösung

Durch das Aktivieren dieses Assistenten wird der Zeitraum zwischen dem Beschädigen des Heap der Garbage Collection durch die nicht verwaltete Komponente und dem Auftreten der Zugriffsverletzung verkürzt, indem vor jedem Übergang in verwalteten Code eine Garbage Collection erzwungen wird.

Auswirkungen auf die Laufzeit

Bei jedem Übergang eines Threads von nicht verwaltetem zu verwaltetem Code wird eine Garbage Collection veranlasst.

Output

Dieser MDA erzeugt keine Ausgabe.

Konfiguration

<mdaConfig>
  <assistants>
    <gcUnmanagedToManaged/>
  </assistants>
</mdaConfig>

Siehe auch

Referenz

gcManagedToUnmanaged-MDA

MarshalAsAttribute

Konzepte

Diagnostizieren von Fehlern mit Assistenten für verwaltetes Debuggen

Interop-Marshalling

Weitere Ressourcen

Interoperabilität