Procédures de traitement des événements et recyclage des ordures
Le programme de traitement des événements joue un rôle essentiel dans la réponse à divers événements. Cependant, un malentendu commun est que les procédures de traitement des événements empêchent les objets d'être recyclés par les ordures.
La procédure du recyclage des ordures et de la manipulation des événements
dans le fragment de code fourni:
MyEvent d'abonné incident est affecté à la méthode MyFunction. Lorsque PCLASS est affecté à NULL, la question apparaît: si la PCLASS sera récupérée immédiatement, ou s'il existe toujours et déclenche un événement.
<code>MyClass pClass = new MyClass(); pClass.MyEvent += MyFunction; pClass = null;</code>
La réponse est oui sur la récupération de la PCLASS par les ordures. Les abonnements à l'événement n'empêcheront pas la récupération des ordures de l'objet de publication (PCLASS). Cependant, il convient de noter que le retour des ordures de l'objet cible (l'objet de l'incident) est statique ou une instance en fonction de la méthode de myFonctionnement.
Procédures statiques de gestion des événements
Si MyFunction est statique, il ne tient pas de référence à l'instance. Par conséquent, l'utilisation de méthodes statiques pour s'abonner pour les incidents n'empêchera pas le recyclage des ordures d'objets cibles.
Procédure de traitement des événements basés sur l'entreprise
Si MyFunction est une méthode d'instance, la détente contient la référence à l'instance. Cela signifie que l'utilisation des méthodes basées sur l'instance pour s'abonner aux événements empêchera l'objet cible d'être recyclé par ordures. Cependant, une fois que l'objet de publication (PCLASS dans cet exemple) remplit les conditions de collecte, ce problème n'existera plus.
Remarque: La relation entre les abonnés incidents et le recyclage des ordures est une seule voie. Si PCLASS s'abonne aux événements traités par des méthodes basées sur l'instance, PCLASS gardera l'objet cible. Cependant, si l'objet cible s'abonne à un événement publié par PCLASS, PCLASS ne conservera pas l'objet cible dans l'activité.
Annuler la récupération des ordures de l'abonnement à l'objet du cycle de vie long
Si la PCLASS est un cycle de vie long et que son temps de séjour à la mémoire est plus long qu'une instance avec myfonction, il peut empêcher l'instance cible d'être recyclée par les ordures. Dans ce cas, l'événement d'abonnement doit être annulé après le traitement pour permettre l'objet cible. Par conséquent, les procédures de traitement des événements n'empêcheront pas la récupération des ordures de l'objet de publication. Cependant, il est nécessaire de déterminer si le type de procédure de traitement des événements (basé sur des instances ou basé sur l'instance) et si l'objet d'abonnement est un cycle de vie long.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!