Astuce Silverlight : Surveiller les événements App.Current Startup, UnhandledException & Exit - #S018
Avez-vous déjà remarqué l’événement de la classe appelé Loaded() qui vous indique quand la page est chargée, mais il n’y a rien pour Exit() ou Quit() ?
Exemple avec Page.Loaded() :
public Page()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(Page_Loaded);
}
void Page_Loaded(object sender, RoutedEventArgs e)
{
}
Une des méthode pour surveiller l’événement Exit() de votre classe Page est de souscrire à l’événement App.Current.Exit(). Exemple :
public Page()
{
InitializeComponent();
App.Current.Exit += new EventHandler(Current_Exit);
}
void Current_Exit(object sender, EventArgs e)
{
}
En plus de l’événement Exit(), il y a également :
- App.Current.Startup()
- App.Current.UnhandledException()
Syndication : Mike Snow’s Weblog
Traduction autorisée par Mike Snow.
Comments
Anonymous
February 23, 2009
Attention en faisant ca, il y'a un risque de fuite mémoire. En effet l'objet Application.Current est un singleton qui n'est déréférencé qu'à l'arrêt de l'application. Hors dans une application avec une logique de navigation avec plusieurs "pages" xaml, si on s'abonne à un évènement de scope application dans ces pages, l'objet application garde une référence forte à l'objet "page", et donc quand on navigue vers une nouvelle vue, cette page continuera à exister en mémoire. Pour éviter cela, il faut passer par ds WeakReference. Faites une petite recherche sur votre moteur de recherche préféré sur WeakReference et WeakEventListener.Anonymous
February 25, 2009
Merci beaucoup Simon de cette précision.