Исключение изолированного хранилища в Windows Phone 7 - PullRequest
0 голосов
/ 25 июля 2011

Я пытаюсь создать страницу настроек, где пользователь может выбрать количество вопросов, песню и скорость прохождения из списка управления выбора.

Тогда выбранный индекс вопроса, песни и скорость прохождения будетзапись в изолированное хранилище.

Ниже приведен мой код:

int indexQues;

    string rate;
    private void saveBtn_Click(object sender, RoutedEventArgs e)
    {
        using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication()) 
        {
            if (myIsolatedStorage.FileExists("SettingFolder\\queSetting.txt")) 
            {
                myIsolatedStorage.DeleteFile("SettingFolder\\queSetting.txt");
            }

            if (myIsolatedStorage.FileExists("SettingFolder\\rateSetting.txt"))
            {
                myIsolatedStorage.DeleteFile("SettingFolder\\rateSetting.txt");
            }
        } 

        indexQues = queListPicker.SelectedIndex;
        rate = rateListPicker.SelectedItem.ToString();

        //Save the number of question to answer when the alarm ring
        //Obtain the virtual store for application
        IsolatedStorageFile myStore = IsolatedStorageFile.GetUserStoreForApplication();
        IsolatedStorageFile myStore1 = IsolatedStorageFile.GetUserStoreForApplication();
        //Create a new folder and call it "AlarmFolder"
        myStore.CreateDirectory("SettingFolder");

        //Retrieve the content of "noOfQues"
        //And write it into queSetting.txt
        StreamWriter writeFile = new StreamWriter(new IsolatedStorageFileStream("SettingFolder\\queSetting.txt", FileMode.Append, myStore));
        StreamWriter writeFile1 = new StreamWriter(new IsolatedStorageFileStream("SettingFolder\\rateSetting.txt", FileMode.Append, myStore));

        writeFile.Write(indexQues);
        writeFile1.Write(rate);
        writeFile.Close();
        writeFile1.Close();

        MessageBox.Show("Setting Saved");
        NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
    }

Приведенный выше код позволяет мне записать в изолированное хранилище, но есть ошибкакогда я пытался сохранить в третий раз.

Ошибка была "IsolatedStorageException был обработан" Произошла ошибка при доступе к IsolatedStorage.

Ответы [ 2 ]

2 голосов
/ 25 июля 2011

Я не уверен, является ли это причиной вашей проблемы, но я никогда не использовал StreamWriter для записи в изолированное хранилище. Попробуйте изменить код записи следующим образом:

//Save the number of question to answer when the alarm ring
//Obtain the virtual store for application
IsolatedStorageFile myStore = IsolatedStorageFile.GetUserStoreForApplication();

//Create a new folder and call it "AlarmFolder"
myStore.CreateDirectory("SettingFolder");

//Retrieve the content of "noOfQues"
//And write it into queSetting.txt
using( IsolatedStorageFileStream isoStream =
  new IsolatedStorageFileStream("SettingFolder\\queSetting.txt", 
    FileMode.Append, myStore)) ) {

      byte[] indexBytes = UTF8Encoding.UTF8.GetBytes( indexQues.ToString() );

      isoStream.Write(indexBytes, 0, indexBytes.Length);
      isoStream.Flush();
}

using( IsolatedStorageFileStream isoStream =
  new IsolatedStorageFileStream("SettingFolder\\rateSetting.txt", 
    FileMode.Append, myStore)) ) {

      byte[] rateBytes = UTF8Encoding.UTF8.GetBytes( rate );

      isoStream.Write(rateBytes, 0, rateBytes.Length);
      isoStream.Flush();
}
0 голосов
/ 25 июля 2011

Вот отличные примеры и прохождения, которые многому меня научили!

http://channel9.msdn.com/blogs/egibson/windows-phone-7-jump-start-session-7-of-12-advanced-application-development-part-1

...