SnapDotNet.Apps.Common.SuspensionManager.SaveAsync C# (CSharp) Method

SaveAsync() public static method

Save the current SessionState. Any Frame instances registered with RegisterFrame will also preserve their current navigation stack, which in turn gives their active Page an opportunity to save its state.
public static SaveAsync ( ) : System.Threading.Tasks.Task
return System.Threading.Tasks.Task
		public static async Task SaveAsync()
		{
			try
			{
				// Save the navigation state for all registered frames
				foreach (var weakFrameReference in _registeredFrames)
				{
					Frame frame;
					if (weakFrameReference.TryGetTarget(out frame))
					{
						SaveFrameNavigationState(frame);
					}
				}

				// Serialize the session state synchronously to avoid asynchronous access to shared
				// state
				MemoryStream sessionData = new MemoryStream();
				DataContractSerializer serializer = new DataContractSerializer(typeof(Dictionary<string, object>), _knownTypes);
				serializer.WriteObject(sessionData, _sessionState);

				// Get an output stream for the SessionState file and write the state asynchronously
				StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(sessionStateFilename, CreationCollisionOption.ReplaceExisting);
				using (Stream fileStream = await file.OpenStreamForWriteAsync())
				{
					sessionData.Seek(0, SeekOrigin.Begin);
					await sessionData.CopyToAsync(fileStream);
				}
			}
			catch (Exception e)
			{
				throw new SuspensionManagerException(e);
			}
		}