簡體   English   中英

WP7中的IsolatedStorageSettings中的參數異常

[英]Argument exception in IsolatedStorageSettings in WP7

在下面的代碼中,我正在獲取ArgumentException 此代碼檢查是否在IsolatedStorageSetting設置了key 如果不存在,則創建它。 此時,發生異常,消息value does not fall within the expected range 我在做什么錯?

 protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);

         var settings = IsolatedStorageSettings.ApplicationSettings;

        if (settings.Contains("bm"))
        {
            string k = (string) settings["bm"];
            if (k == "1")
            {
                cb1.IsChecked = true;
            }
            else
            {
                cb1.IsChecked = false;
            }
        }
        else
        {
            cb1.IsChecked=true;
            settings.Add("bm","1"); //exception occurs here
            settings.Save();
         }
}

正如我們在MSDN中看到的

ArgumentException發生在

字典中已存在該鍵。

因此,我可以看到兩個問題:

  • 在並行線程中的某個位置,鍵“ bm”被保存到設置中。
  • 鍵是不同的。 “ь”和“ b”是不同的字母,但是看起來相似。

嘗試定義一個常量字符串:

private const string BM_KEY = "bm";

並在您每次訪問設置時使用它。

   if (settings.Contains(BM_KEY))
        {
            string k = (string) settings[BM_KEY];
            if (k == "1")
            {
                cb1.IsChecked = true;
            }
            else
            {
                cb1.IsChecked = false;
            }
        }
        else
        {
            cb1.IsChecked=true;
            settings.Add(BM_KEY,"1"); //exception occurs here
            settings.Save();
        }

確保您每次都使用相同的密鑰。

或者嘗試刪除現有的鍵(例如“ lastBranoCalled”);)

if (IsolatedStorageSettings.ApplicationSettings.Remove("lastBranoCalled"))
                    IsolatedStorageSettings.ApplicationSettings.Add("lastBranoCalled", this.Panorama.SelectedIndex.ToString());
                else MessageBox.Show("Error");
            else IsolatedStorageSettings.ApplicationSettings.Add("lastBranoCalled", this.Panorama.SelectedIndex.ToString());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM