2010-12-06 30 views
1

Je vous abonnant à un événement dans un masterpage de l'une des pages en cas page_load dire j'ai le codeévénements ASP.NET de masterpage

this.Master.Event1 += new Event1EventHandler(Master_Event1); 

en cas page_load.

Si je ne me désinscrit pas de l'événement, cela peut-il entraîner une fuite de mémoire? Quel serait un moyen approprié de se désinscrire? Dois-je le faire dans l'événement page_unload? Cela gérera l'action de l'utilisateur de quitter la page, mais quelle serait la bonne façon de le gérer si l'utilisateur ferme le navigateur? Session_end dans global.asax?

Merci

Répondre

1

listes de gestionnaire d'événements sont des références essence faibles, de sorte que ne causera pas une fuite de mémoire. Vous ne supprimez pas explicitement tous vos Click et quels que soient les gestionnaires, n'est-ce pas?

En outre, l'événement Unload n'a rien à voir avec l'utilisateur fermant la fenêtre du navigateur. Pour moi, il semble que vous ayez mal compris certains principes fondamentaux du Web et/ou ASP.NET. À la différence de Windows Forms ou WPF, ASP.NET est sans état (comme le reste de toutes les solutions de serveur Web)

0

En résumé, cela signifie que lorsqu'une requête GET arrive, le serveur Web (IIS) gère la requête et génère une page html basée sur la page aspx que vous avez créée (avec ou sans une page maître). Ainsi, lorsque vous connectez un gestionnaire d'événements à un événement déclenché à partir de la page principale, vous ne pouvez le gérer que dans la même requête, dans la page de contenu ou dans les contrôles utilisateur que vous chargez dans cette page de contenu. Pourquoi voulez-vous déclencher un événement dans votre page maître? Si vous nous en dire plus sur la fonctionnalité que vous recherchez, nous pourrions être en mesure de fournir une solution de rechange - peut-être même mieux -.

En savoir plus sur ASP.NET dans les pages suivantes MSDN, ou tout simplement Google vous à Knowlegde :)

ASP.NET Page Life Cycle Overview

Events in ASP.NET Master and Content Pages