共用方式為


HOW TO:跨應用程式工作階段保存和還原應用程式範圍的屬性

更新:2007 年 11 月

這個範例顯示如何在應用程式關閉後保存應用程式範圍屬性,以及如何在下次啟動應用程式時還原應用程式範圍屬性。

範例

應用程式會將應用程式範圍的屬性保存在隔離儲存區 (Isolated Storage) 中,並從中還原屬性。隔離儲存區是受保護的儲存區域,可以安全地供沒有檔案存取權限的應用程式使用。

<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]);
                }
            }
        }
    }
}