PivotViewer从iexplorer.exe抛出异常

时间:2012-03-12 17:47:55

标签: silverlight internet-explorer pivotviewer

我正在使用PivotViewer并看到从iexplorer.exe抛出此异常。

Silverlight应用程序中的未处理错误 代码:4004
类别:ManagedRuntimeError
消息:System.ArgumentException:ICollectionView只能包含PivotViewer的ItemsSource中的项目    在Microsoft.Internal.Pivot.ViewModels.GridViewModel.UpdateOnModelChanged()    在Microsoft.Internal.Pivot.ViewModels.ViewBaseViewModel.OnUpdateComplete(Object sender,EventArgs e)    在System.Windows.Controls.Pivot.PivotViewerView.ExposeCollectionView(ICollectionView collectionView,CollectionViewSource collectionSource,IDisposable deferrer)    在System.Windows.Controls.Pivot.PivotViewerView.SetModel(PivotViewerProperty sortPivotProperty,IEnumerable`1 source)    在Microsoft.Internal.Pivot.Controls.CollectionViewContainer.UpdateContent()    在Microsoft.Internal.Pivot.Controls.CollectionViewContainer.b__0()

以下是我正在做的事情的描述。 pivot viewer的ItemsSource绑定到ViewModel中名为“Sessions”的ObservableCollection。当用户第一次访问我的网站时,他没有登录,我将从远程演示数据库填充枢轴查看器(通过使用WebClient.OpenReadAsync)。当用户登录时,我将清除“会话”并从他自己的数据库中读取数据(使用相同的代码WebClient.OpenReadAsync)。在这一点上,一切都按预期工作。数据透视表显示演示数据并在登录后刷新。

当他退出时,当我使用相同的代码清除“会话”并再次从演示数据库中读取数据时,会出现问题。它引发了上述异常。

我有一个解决方法。当用户注销时,如果我仍然清除“会话”但不添加演示数据库中的任何数据,它将起作用。我可以多次登录和注销,没有任何问题。所以这表明问题可能与我向“Session”ObservableCollection添加数据的代码有关。

我也猜测这是与WebClient的OpenReadAsync引起的线程相关的竞争条件,用于从远程网站读取数据。

我现在被困住了,任何帮助都会受到赞赏。谢谢!

0 个答案:

没有答案