Application.Current.Properties - System.AggregateException

时间:2016-06-14 18:33:52

标签: xamarin xamarin.forms

我正在尝试从Application.Current.Properties存储中获取一些数据。不幸的是,无论何时我想使用这个词典,我都会看到这个错误:

  

mscorlib.ni.dll中出现'System.AggregateException'类型的异常,但未在用户代码中处理

     

其他信息:发生了一个或多个错误。

详细情况我发现了这个:

  

{“第1行位置206的错误。元素'http://schemas.microsoft.com/2003/10/Serialization/Arrays:Value'包含'http://schemas.microsoft.com/2003/10/Serialization/Arrays:ArrayOfstring'数据合同的数据。反序列化器不知道映射到此合同的任何类型。添加将“ArrayOfstring”对应的类型添加到已知类型列表中 - 例如,使用KnownTypeAttribute属性或将其添加到传递给DataContractSerializer的已知类型列表中。“}

好像我试图将一些非字符串数据保存到Application.Current.Properties。不幸的是我无法运行.Clear()方法来设置所有数据,因为我在尝试访问此属性时会收到此错误。

我该怎么做才能让它发挥作用?

2 个答案:

答案 0 :(得分:0)

好吧,顾名思义就是AggregateException,它只是一个容器,用于在使用PLINQ或TPL时可能抛出的一个或多个异常。

由于此类异常可能会抛出在不同的线程上并且也可能同时发生,因此系统会自动捕获并重新抛出它们在AggregateException包装器中,以确保它们都在一个地方报告。异常本身通过InnerExceptions属性公开。

您可以捕获AggregateException并使用以下代码检查它实际包含的异常:

try
{
    // perform some parallel operation
}
catch (AggregateException aex)
{
    string messages = "";

    foreach(Exception ex in aex.InnerExceptions)
    {
        messages += ex.Message + "\r\n";    
    }

    MessageBox.Show(messages);
}

所以我建议你这样做以查看导致问题的原因

答案 1 :(得分:0)

请从设备中删除您的应用,设置 - 应用 - 卸载,这对我有用。 Auth对象在调试模式下崩溃。清理和重建可以是有用的。