Technology Experience
.NET World

Riavviare un’applicazione WPF

Da documentazione trovata su MSDN, nel buon vecchio Windows Forms era possibile riavviare l’applicazione con una sola linea di codice. Era infatti possibile invocare il metodo Restart() della classe System.Windows.Forms.Application ed il gioco era fatto.

Con WPF le cose sono un pochino cambiate, ma solo un pochino.

Dunque: innanzitutto la classe Application per le applicazioni WPF e la classe Application per le applicazioni Windows Forms sono classi differenti. Perciò occhio: se parliamo di WPF, la classe Application sta nel namespace System.Windows.

Questa classe espone una proprietà statica Current, tramite la quale è possibile accedere all’applicazione corrente all’interno dell’AppDomain. A questo punto è possibile invocare il metodo Shutdown(), che chiude l’applicazione. Come è possibile riavviarla? La cosa più semplice che ho trovato è intercettare l’evento Exit dell’applicazione e riavviarla. Quindi, supponiamo di aver messo un Button su una Windows e di voler chiudere e riavviare l’applicazione sul Click di questo bottone. Il codice sarà:

   1:  private void LanguageButton_Click(object sender, System.Windows.RoutedEventArgs e)
   2:  {
   3:      Application.Current.Exit += delegate(object s, ExitEventArgs args)
   4:      {
   5:          System.Diagnostics.Process.Start(Application.ResourceAssembly.Location);
   6:      };
   7:   
   8:      Application.Current.Shutdown();
   9:  }

Molto semplice, direi. L’unica osservazione da fare è quella di sottoscrivere l’evento Exit solo quando necessario. In questo modo, potete chiudere l’applicazione come al solito (ALT+F4, cliccando sulla X in alto a destra) e l’applicazione non riparte: riparte solo quando si va a cliccare su quel Button particolare.

Send to Kindle

Igor Damiani

La sua passione per l'informatica nasce nella prima metà degli anni '80, quando suo padre acquistò un Texas Instruments TI-99. Da allora ha continuato a seguire l'evoluzione sia hardware che software avvenuta nel corso degli anni. E' un utente, un videogiocatore ed uno sviluppatore software a tempo pieno. Igor ha lavorato e lavora anche oggi con le più moderne tecnologie Microsoft per lo sviluppo di applicazioni: .NET Framework, XAML, Universal Windows Platform, su diverse piattaforme, tra cui spiccano Windows 10 piattaforme mobile. Numerose sono le app che Igor ha creato e pubblicato sul marketplace sotto il nome VivendoByte, suo personale marchio di fabbrica. Adora mantenere i contatti attraverso Twitter e soprattutto attraverso gli eventi delle community .NET.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.