How to: Persist and Restore Application-Scope Properties Across Application Sessions

This example shows how to persist application-scope properties when an application shuts down, and how to restore application-scope properties when an application is next launch.

The application persists application-scope properties to, and restores them from, isolated storage. Isolated storage is a protected storage area that can safely be used by applications without file access permission.

<Application
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="SDKSample.App"
    StartupUri="MainWindow.xaml" 
    Startup="App_Startup" 
    Exit="App_Exit">


...


</Application>
using System.Windows; // Application, StartupEventArgs 
using System.IO; // StreamReader, FileMode 
using System.IO.IsolatedStorage; // IsolatedStorageFile, IsolatedStorageFileStream 

namespace SDKSample
{
    public partial class App : Application
    {
        string filename = "App.txt";



...


private void App_Startup(object sender, StartupEventArgs e)
{
    // Restore application-scope property from isolated storage
    IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForDomain();
    try
    {
        using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(filename, FileMode.Open, storage))
        using (StreamReader reader = new StreamReader(stream))
        {
            // Restore each application-scope property individually 
            while (!reader.EndOfStream)
            {
                string[] keyValue = reader.ReadLine().Split(new char[] {','});
                this.Properties[keyValue[0]] = keyValue[1];
            }
        }
    }
    catch (FileNotFoundException ex)
    {
        // Handle when file is not found in isolated storage: 
        // * When the first application session 
        // * When file has been deleted


...


            }
        }

        private void App_Exit(object sender, ExitEventArgs e)
        {
            // Persist application-scope property to isolated storage
            IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForDomain();
            using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(filename, FileMode.Create, storage))
            using (StreamWriter writer = new StreamWriter(stream))
            {
                // Persist each application-scope property individually 
                foreach (string key in this.Properties.Keys)
                {
                    writer.WriteLine("{0},{1}", key, this.Properties[key]);
                }
            }
        }
    }
}
Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft