gcManagedToUnmanaged MDA
Kommentar
Den här artikeln är specifik för .NET Framework. Det gäller inte för nyare implementeringar av .NET, inklusive .NET 6 och senare versioner.
Den gcManagedToUnmanaged
hanterade felsökningsassistenten (MDA) orsakar en skräpinsamling när en tråd övergår från hanterad till ohanterad kod.
Symtom
En ohanterad användarkomponent utlöser en åtkomstöverträdelse när ett hanterat objekt som har exponerats för COM används. COM-objektet verkar ha släppts. Åtkomstöverträdelsen är icke-terministisk.
Orsak
Om en ohanterad komponent inte refererar till att räkna ett hanterat COM-objekt korrekt kan körningen samla in ett hanterat objekt som exponeras för COM när den ohanterade komponenten fortfarande innehåller en referens till objektet. Körningen anropar Release under skräpsamlingar, så om användarkomponenten använder objektet innan skräpinsamlingen inträffar har den ännu inte samlats in. Detta är källan till nondeterminismen.
Åtgärd
Om du aktiverar den här assistenten minskar tiden mellan när objektet är berättigat till samling och Release anropas, vilket hjälper till att spåra vilken ohanterad komponent som först försöker komma åt det insamlade objektet.
Effekt på körningen
Orsakar en skräpinsamling när en tråd övergår från hanterad till ohanterad kod.
Output
Den här MDA:n genererar inga utdata.
Konfiguration
<mdaConfig>
<assistants>
<gcManagedToUnmanaged/>
</assistants>
</mdaConfig>