/// <summary> /// Wird aufgerufen, wenn die Ausführung der Anwendung angehalten wird. Der Anwendungszustand wird gespeichert, /// ohne zu wissen, ob die Anwendung beendet oder fortgesetzt wird und die Speicherinhalte dabei /// unbeschädigt bleiben. /// </summary> /// <param name="sender">Die Quelle der Anhalteanforderung.</param> /// <param name="e">Details zur Anhalteanforderung.</param> private async void OnSuspending(object sender, SuspendingEventArgs e) { Settings.Current.SuspendTime = DateTime.Now; SuspendingDeferral deferral = e.SuspendingOperation.GetDeferral(); BackgroundTaskHandler.Current.Stop(); try { ServiceProfile profile = new ServiceProfile(viewModel.Service.Builder); StringWriter writer = new StringWriter(); serializer.Serialize(writer, profile); StorageFile file = await ApplicationData.Current.LocalFolder .CreateFileAsync(serviceProfileFilename, CreationCollisionOption.OpenIfExists); await FileIO.WriteTextAsync(file, writer.ToString()); } catch (Exception exc) { System.Diagnostics.Debug.WriteLine("Saving service profile failed:\n" + exc); } deferral.Complete(); }
/// <summary> /// Wird aufgerufen, wenn die Anwendung durch den Endbenutzer normal gestartet wird. Weitere Einstiegspunkte /// werden z. B. verwendet, wenn die Anwendung gestartet wird, um eine bestimmte Datei zu öffnen. /// </summary> /// <param name="e">Details über Startanforderung und -prozess.</param> protected override async void OnLaunched(LaunchActivatedEventArgs e) { rootFrame = Window.Current.Content as Frame; BackPressHandler.Current.Activate(); // App-Initialisierung nicht wiederholen, wenn das Fenster bereits Inhalte enthält. // Nur sicherstellen, dass das Fenster aktiv ist. if (rootFrame == null) { // Frame erstellen, der als Navigationskontext fungiert und zum Parameter der ersten Seite navigieren rootFrame = new Frame(); rootFrame.NavigationFailed += OnNavigationFailed; if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) { //TODO: Zustand von zuvor angehaltener Anwendung laden } // Den Frame im aktuellen Fenster platzieren Window.Current.Content = rootFrame; } if (e.PrelaunchActivated == false) { if (rootFrame.Content == null) { try { IStorageItem item = await ApplicationData.Current.LocalFolder.TryGetItemAsync(serviceProfileFilename); if (item is StorageFile) { string xmlText = await FileIO.ReadTextAsync((StorageFile)item); StringReader reader = new StringReader(xmlText); ServiceProfile profile = (ServiceProfile)serializer.Deserialize(reader); profile.FillServiceBuilder(viewModel.Service.Builder); } } catch (Exception exc) { System.Diagnostics.Debug.WriteLine("Loading service profile failed:\n" + exc); } rootFrame.Navigate(typeof(MainPage), viewModel); } // Sicherstellen, dass das aktuelle Fenster aktiv ist Window.Current.Activate(); } launchCompletionSource.TrySetResult(true); }