【问题标题】:ObservableCollection and UnhandledException with unspecified error in Windows Phone 8.1Windows Phone 8.1 中出现未指定错误的 ObservableCollection 和 UnhandledException
【发布时间】:2016-02-23 11:24:48
【问题描述】:

我有以下代码,如果我删除“Task.Delay”,它会抛出带有消息“未指定错误”的 UnhandledException。 此异常不会从实际代码中抛出,也不会被任何 try catch 捕获。

ViewModel Code:

ObservableCollection<Data> _newData;
ObservableCollection<Data> _oldData;

List<Data> dataList = await Task.Run(() => GetData());

foreach(var dataItem in dataList)
{
    if(dataItem.Type == DataType.New)
        _newData.Add(dataItem);
    else        
        _oldData.Add(dataItem);

    await Task.Delay(1); // Comment out and code fails
}

这只会在“dataList”变得足够大时发生。

【问题讨论】:

  • 你初始化了 _oldData 和 _newData 集合了吗?
  • 是的。它不是代码中的空引用错误。将所有内容包装在 try catch all 中不起作用或捕获任何内容。
  • 你能提供一个堆栈跟踪吗? wpfwindows-phone-8.1winrt-async 是否会发生这种情况?
  • 未处理的异常中没有堆栈跟踪或其他信息。它发生在 Windows Phone 8.1 RT 中。异常出现在 App.UnhandledExceptionHandler 中。我的代码中没有 try catch 捕获它。
  • 你有绑定到你的集合的事件处理程序吗?该错误可能来自一个事件处理程序试图在添加一些新项目时更改集合...

标签: wpf windows-phone-8.1 winrt-async


【解决方案1】:

_newData 和 _oldData 未初始化 (null),因此您可能需要实例化它们以查看是否仍有问题。

另外,您正在使用 ObservableCollection,所以我猜您将它们绑定在 UI 上:在将项目添加到集合之前,请确保您不在另一个线程中(使用 Dispatcher)。

【讨论】:

    【解决方案2】:

    原来是一个完全不相关的问题。

    Flyout 替换MenuFlyout 解决了这个问题。我不确定为什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-29
      相关资源
      最近更新 更多