Aracılığıyla paylaş


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>

Ayrıca bkz.