In der Regel sollte sich eine App nicht von selbst beenden. Entweder wird sie in einen Suspendet-Modus (Schlafmodus) gesetzt oder der Anwender schließt die App explizit durch den Back-Button. Wird diese Anforderung dennoch erwünscht, kann das durch einen einfachen Workaround mittels Exception ermöglicht werden. Denn unbehandelte Exceptions unter Silverlight lassen die Anwendung einfach ohne weiteren Hinweis beenden. Dafür eignet sich das Anlegen einer eigenen CloseException. Wird diese innerhalb der App geworfen, so soll sie bei der allgemeinen Application_UnhandledException-Methode unbehandelt an das System zurückgegeben werden. Durch eine einfache Erweiterung der App.xaml.cs-Datei lässt sich diese Funktion statisch zur Verfügung stellen (Listing 1). Diese kann dann applikationsweit mittels App.Close(); die App schließen lassen.
Listing 1: App.xaml.cs-Datei mit Close-Funktion erweitern
public static void Close()
{
throw new CloseException();
}
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
if (e.ExceptionObject is CloseException)
return;
...
}