Adakah prosedur pemprosesan acara mengganggu pemulihan sampah?
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>
Jawapan:
<code class="language-c#">MyClass pClass = new MyClass(); pClass.MyEvent += MyFunction; pClass.MyEvent -= MyFunction; pClass = null;</code>
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:
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!