PivotViewer を使用していますが、この例外が iexplorer.exe からスローされているのを確認しています。
「Silverlight アプリケーション コードの未処理のエラー: 4004
カテゴリ: ManagedRuntimeError
メッセージ: System.ArgumentException: ICollectionView には、Microsoft.Internal.Pivot.ViewModels.GridViewModel.UpdateOnModelChanged() の Microsoft.Internal.Pivot.ViewModels.ViewBaseViewModel.OnUpdateComplete(Object sender, EventArgs e) の PivotViewer の ItemsSource にある項目のみを含めることができます。 Microsoft.Internal.Pivot. Controls.CollectionViewContainer.UpdateContent() at Microsoft.Internal.Pivot.Controls.CollectionViewContainer.b__0()
"
これが私がやっていることの説明です。ピボット ビューアの ItemsSource は、ViewModel の「Sessions」と呼ばれる ObservableCollection にバインドされています。ユーザーが最初に私の Web サイトにアクセスしたとき、彼はログインしていないので、(WebClient.OpenReadAsync を使用して) リモート デモ データベースからピボット ビューアーを設定します。ユーザーがログインすると、「セッション」をクリアし、自分のデータベースからデータを非同期的に読み取ります (同じコード WebClient.OpenReadAsync を使用)。この時点で、すべてが期待どおりに機能します。PivotViewer にはデモ データが表示され、ログイン後に正常に更新されます。
同じコードを使用して「セッション」をクリアし、デモデータベースから非同期でデータを再度読み取ると、彼がログアウトしたときに問題が発生します。上記の例外をスローします。
回避策があります。ユーザーがログアウトしたときに、「セッション」をクリアしてもデモデータベースからデータを追加しないと、機能します。ログインとログアウトを何度も繰り返しても問題ありません。これは、問題がおそらく "Session" ObservableCollection にデータを追加するコードに関連していることを示しています。
また、リモート Web サイトからデータを読み取る WebClient の OpenReadAsync によって引き起こされるスレッドに関連する競合状態であると推測しています。
私は今立ち往生しており、助けていただければ幸いです。ありがとう!