Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 gcManagedToUnmanaged verwaltete Debugging-Assistent (Managed Debugging Assistant, MDA) bewirkt eine Garbage Collection, wenn ein Thread von verwaltetem zu nicht verwaltetem Code wechselt.
Symptome
Eine nicht verwaltete Benutzerkomponente löst eine Zugriffsverletzung aus, wenn versucht wird, ein verwaltetes Objekt zu verwenden, das für COM verfügbar gemacht wurde. Das COM-Objekt scheint freigegeben worden zu sein. Die Zugriffsverletzung ist nicht unbestimmt.
Ursache
Wenn eine nicht verwaltete Komponente nicht auf das Zählen eines verwalteten COM-Objekts verweist, kann die Laufzeit ein verwaltetes Objekt sammeln, das COM verfügbar gemacht wird, wenn die nicht verwaltete Komponente weiterhin einen Verweis auf das Objekt enthält. Die Laufzeitaufrufe Release während der Garbage Collections. Wenn also die Benutzerkomponente das Objekt verwendet, bevor die Garbage Collection eintritt, wurde sie noch nicht erfasst. Dies ist die Quelle des Nichtdeterminismus.
Auflösung
Durch aktivieren dieses Assistenten wird die Zeit zwischen dem Zeitpunkt reduziert, in dem das Objekt für die Sammlung berechtigt ist und Release aufgerufen wird, um nachzuverfolgen, welche nicht verwaltete Komponente zuerst versucht, auf das gesammelte Objekt zuzugreifen.
Effekt auf die Laufzeit
Verursacht eine Garbage Collection, wenn ein Thread von verwaltetem zu nicht verwaltetem Code wechselt.
Output
Diese MDA erzeugt keine Ausgabe.
Konfiguration
<mdaConfig>
<assistants>
<gcManagedToUnmanaged/>
</assistants>
</mdaConfig>