gcManagedToUnmanaged MDA
Not
Bu makale .NET Framework'e özgüdür. .NET 6 ve sonraki sürümleri de dahil olmak üzere daha yeni .NET uygulamaları için geçerli değildir.
Yönetilen gcManagedToUnmanaged
hata ayıklama yardımcısı (MDA), bir iş parçacığı yönetilen koddan yönetilmeyen koda her geçişte çöp toplamaya neden olur.
Belirtiler
Yönetilmeyen bir kullanıcı bileşeni, COM'a açık olan yönetilen bir nesneyi kullanmaya çalışırken erişim ihlali oluşturur. COM nesnesi serbest bırakılmış gibi görünüyor. Erişim ihlali belirsiz değildir.
Neden
Yönetilmeyen bir bileşen, yönetilen bir COM nesnesini doğru saymaya başvurulmuyorsa, yönetilmeyen bileşen nesneye hala başvuruda bulunduğunda çalışma zamanı COM'a açık bir yönetilen nesne toplayabilir. Çalışma zamanı çöp toplama sırasında çağrılar Release , bu nedenle kullanıcı bileşeni çöp toplama gerçekleşmeden önce nesnesini kullanırsa, henüz toplanmaz. Bu, belirsizliğin kaynağıdır.
Çözüm
Bu yardımcının etkinleştirilmesi, nesnenin koleksiyon için uygun olduğu ve çağrıldığı zaman arasındaki süreyi kısaltır ve Release hangi yönetilmeyen bileşenin toplanan nesneye ilk kez erişmeye çalıştığını izlemeye yardımcı olur.
Çalışma Zamanı üzerindeki etkisi
bir iş parçacığı yönetilen koddan yönetilmeyen koda her geçişte çöp toplamaya neden olur.
Çıktı
Bu MDA çıkış üretmez.
Yapılandırma
<mdaConfig>
<assistants>
<gcManagedToUnmanaged/>
</assistants>
</mdaConfig>