Compartir a través de


Cómo: Conservar y restaurar propiedades en el ámbito de aplicación a través de sesiones de aplicación

Actualización: noviembre 2007

En este ejemplo se muestra cómo conservar las propiedades del ámbito de aplicación cuando una aplicación se cierra, y cómo restaurar las propiedades del ámbito de aplicación la próxima vez que se inicia la aplicación.

Ejemplo

La aplicación conserva las propiedades del ámbito de aplicación en un almacenamiento aislado, desde el que las restaura. El almacenamiento aislado es una área de almacenamiento protegido que puede ser utilizada sin ningún riesgo por aplicaciones que no tengan permiso de acceso a archivos.

<Application
    xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="https://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]);
                }
            }
        }
    }
}