Rumah > pembangunan bahagian belakang > C++ > Adakah pengendali acara menghalang pengumpulan sampah objek saya?

Adakah pengendali acara menghalang pengumpulan sampah objek saya?

Patricia Arquette
Lepaskan: 2025-01-26 23:51:12
asal
665 orang telah melayarinya

Will Event Handlers Prevent Garbage Collection of My Objects?

Adakah prosedur pemprosesan acara mengganggu pemulihan sampah?

<:> Soalan:

Pertimbangkan kod berikut:

pclass akan dikitar semula oleh sampah? Atau adakah ia akan berterusan dan mencetuskan acara? Adakah anda perlu membatalkan acara langganan seperti ini:
<code class="language-c#">MyClass pClass = new MyClass();
pClass.MyEvent += MyFunction;
pClass = null;</code>
Salin selepas log masuk

Jawapan:
<code class="language-c#">MyClass pClass = new MyClass();
pClass.MyEvent += MyFunction;
pClass.MyEvent -= MyFunction;
pClass = null;</code>
Salin selepas log masuk

Kitar semula sampah Penerbit Insiden:

melanggan myEvent tidak akan menjejaskan pemulihan sampah pClass (penerbit). Kitar semula sampah objek sasaran:

Biasanya, tingkah laku kitar semula sampah bergantung kepada sama ada MyFunction adalah contoh atau kaedah statik:

Kaedah Contoh:

melanggan MyFunction ke MyEvent termasuk kutipan kepada MyClass. Oleh itu, ia boleh menghalang pemulihan sampah objek sasaran. Walau bagaimanapun, apabila objek penerbit memenuhi syarat pengumpulan, masalah ini akan berhenti.

Kaedah statik:
    Insiden statik tidak akan menghalang kitar semula sisa objek sasaran.
  • Langkah berjaga -jaga lain:
  • Jika penerbit (contohnya, pclass) mempunyai kitaran hayat yang panjang, dan kitaran hayat panjang kitaran hayat objek sasaran (mis., Yang mengandungi objek myfunction), anda perlu membatalkan langganan untuk memastikan Bahawa objek sasaran dapat dipulihkan oleh sampah.
Apabila peristiwa statik digunakan dalam kombinasi dengan prosedur pemprosesan berasaskan contoh, mereka sangat berbahaya kerana mereka mungkin menghalang pemulihan sampah objek sasaran tanpa had.

Atas ialah kandungan terperinci Adakah pengendali acara menghalang pengumpulan sampah objek saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan