Astuce Silverlight : Surveiller les événements App.Current Startup, UnhandledException & Exit - #S018

image

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 :

  1. App.Current.Startup()
  2. 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.