【问题标题】:Unhandled Exception when trying to save data in Win Mobile 8 c#尝试在 Win Mobile 8 c# 中保存数据时出现未处理的异常
【发布时间】:2013-11-30 19:17:00
【问题描述】:

我正在使用下面的代码尝试使用 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

任何想法

【问题讨论】:

  • 你能附加一个调试器并查看异常发生在哪里吗?根据发布的信息几乎不可能判断这里出了什么问题(这里有太多可能的异常来源)
  • 第一次调用时发生:
  • if (ApplicationData.Current.LocalSettings.Values.ContainsKey(key))
  • 你传入什么作为key?
  • 为了尝试保存我使用的信息 SaveInfo("mcsserver", urlText.Text); urlText 是包含我需要保存到名为“mcsserver”的键的信息的文本框

标签: c# visual-studio-2012 windows-phone-8 storage application-data


【解决方案1】:

我需要使用IsolatedStorageSettings 功能,如下:

IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;


            settings["test"] = urlText.Text;
            settings.Save();

【讨论】:

  • 您的代码是多余的。换句话说。无论如何,它都会做同样的事情。如果字典不包含键,它会添加键,它确实包含键,它会覆盖键。无论哪种情况,字典都有键和值。通过不检查它是否包含密钥来简化您的代码,只需执行settings["test"] = urlText.Text;
  • 感谢肖恩的提示,我只是使用另一个示例中的代码
  • 如果此答案中的代码较慢,则关键要点。使用您发布的代码,字典需要进行两次哈希查找。当仅通过索引settings["test"] = urlText.Text 设置时,它只需要进行一次哈希查找。 90% 的情况下,两次哈希查找并不明显。但是,如果您使用字典进行大量工作(插入数千/数百万条记录),这可能会变得很昂贵。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多