Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Note
Artikel ini khusus untuk .NET Framework. Ini tidak berlaku untuk implementasi .NET yang lebih baru, termasuk .NET 6 dan versi yang lebih baru.
Asisten gcManagedToUnmanaged penelusuran kesalahan terkelola (MDA) menyebabkan pengumpulan sampah setiap kali utas beralih dari kode yang dikelola ke tidak dikelola.
Gejala
Komponen pengguna yang tidak dikelola melempar pelanggaran akses saat mencoba menggunakan objek terkelola yang telah terekspos ke COM. Objek COM tampaknya telah dirilis. Pelanggaran akses bersifat nondeterministik.
Penyebab
Jika komponen yang tidak dikelola tidak mereferensikan penghitungan objek COM terkelola dengan benar, maka runtime dapat mengumpulkan objek terkelola yang terekspos ke COM ketika komponen yang tidak dikelola masih menyimpan referensi ke objek. Runtime memanggil Release selama pengumpulan sampah, jadi jika komponen pengguna menggunakan objek sebelum pengumpulan sampah terjadi, maka itu belum akan dikumpulkan. Ini adalah sumber dari nondeterminisme.
Resolution
Mengaktifkan asisten ini mengurangi waktu antara ketika objek memenuhi syarat untuk pengumpulan dan Release dipanggil, membantu melacak komponen yang tidak dikelola terlebih dahulu mencoba mengakses objek yang dikumpulkan.
Efek pada Runtime
Menyebabkan pengumpulan sampah setiap kali utas beralih dari terkelola ke kode yang tidak dikelola.
Hasil
MDA ini tidak menghasilkan output.
Konfigurasi
<mdaConfig>
<assistants>
<gcManagedToUnmanaged/>
</assistants>
</mdaConfig>