Необработанное исключение при попытке сохранить данные в Win Mobile 8 c#

Я использую приведенный ниже код, чтобы попытаться сохранить локальные настройки в Windows Mobile 8 с помощью С#.

 public void SaveInfo(string key, string value)
        {
            if (ApplicationData.Current.LocalSettings.Values.ContainsKey(key))
            {
                if (ApplicationData.Current.LocalSettings.Values[key].ToString() != null)
                {
                    // do update
                    ApplicationData.Current.LocalSettings.Values[key] = value;
                }
            }
            else
            {

                // do create key and save value, first time only.
                ApplicationData.Current.LocalSettings.CreateContainer(key, ApplicationDataCreateDisposition.Always);
                if (ApplicationData.Current.LocalSettings.Values[key] == null)
                {
                    ApplicationData.Current.LocalSettings.Values[key] = value;
                }
            }
        }

При вызове кода происходит сбой отладки с исключением ниже:

Необработанное исключение типа System.Reflection.TargetInvocationException в System.Windows.ni.dll

Есть идеи


person Dan James Palmer    schedule 30.11.2013    source источник
comment
Вы можете подключить отладчик и посмотреть, где происходит исключение? Практически невозможно сказать, что здесь происходит не так, основываясь на размещенной информации (здесь слишком много возможных источников исключений).   -  person JaredPar    schedule 30.11.2013
comment
это происходит при первом вызове:   -  person Dan James Palmer    schedule 30.11.2013
comment
если (ApplicationData.Current.LocalSettings.Values.ContainsKey(ключ))   -  person Dan James Palmer    schedule 30.11.2013
comment
Что вы передаете в качестве ключа?   -  person Igor Ralic    schedule 01.12.2013
comment
Чтобы попытаться сохранить информацию, я использую SaveInfo(mcsserver, urlText.Text); urlText — это TextBox, содержащий информацию, которую мне нужно сохранить в ключ с именем mcsserver   -  person Dan James Palmer    schedule 01.12.2013


Ответы (1)


Мне нужно было использовать функцию IsolatedStorageSettings, как показано ниже:

IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;


            settings["test"] = urlText.Text;
            settings.Save();
person Dan James Palmer    schedule 01.12.2013
comment
Ваш код лишний. Другими словами. Он делает то же самое, несмотря ни на что. Если словарь не содержит ключа, он добавляет ключ, если да, то он переопределяет ключ. В любом случае словарь имеет ключ и значение. Упростите свой код, не проверяя, содержит ли он ключ, и просто выполните settings["test"] = urlText.Text; - person Shawn Kendrot; 01.12.2013
comment
Спасибо за совет, Шон, я просто использовал код из другого примера. - person Dan James Palmer; 01.12.2013
comment
Ключевой вывод, если код, как в этом ответе, медленнее. С кодом, который вы разместили, словарь должен выполнить два поиска по хешу. При настройке только через индекс settings["test"] = urlText.Text требуется только один поиск хэша. В 90% случаев два поиска по хешу незаметны. Но если вы много работаете со словарем (вставляете тысячи/миллионы записей), это может дорого обойтись. - person Shawn Kendrot; 02.12.2013