4

コレクション(またはコレクションを変更する操作)に追加/挿入/削除しようとすると、以下の例外が発生します。コレクションは初期化され、挿入されたアイテムはnullではなく、コレクションTと同じタイプです。

なぜこれが起こるのかについて誰かが私に手がかりを与えることができますか?

ランタイムで致命的なエラーが発生しました。エラーのアドレスは、0x60f41744スレッドの0x231cでした。エラーコードは0x80131623です。
このエラーは、CLRのバグ、またはユーザーコードの安全でない部分または検証できない部分のバグである可能性があります。このバグの一般的な原因には、COM-interopまたはPInvokeのユーザーマーシャリングエラーがあり、スタックが破損する可能性があります。

更新:コレクションはObservableCollectionであり、コレクションの変更の通知部分で発生することを知ることができました。

これは、オプションを指定したタスク内のUIスレッドで発生しTaskScheduler.FromCurrentSynchronizationContext()ます。

奇妙なことに、この(TaskScheduler.FromCurrentSynchronizationContext())オプションを削除すると、追加/挿入/削除アクションがすべて正常に機能するように見えます。

4

2 に答える 2

6

エラー コードは 0x80131623 です

これは非常に具体的なエラー コード COR_E_FAILFAST です。それを生成する唯一の方法は、誰かが Environment.FailFast() を呼び出したことです。

明らかに課題は、それを呼び出したコードを見つけることです。最初に Windows アプリケーション イベント ログを調べます。FailFast() に渡された文字列が何であれ、呼び出しの主な理由を示すメッセージがあるはずです。


アプリケーションは、System.Environment.FailFast(string メッセージ) を通じてプロセスの終了を要求しました。
System.Environment.FailFast (System.String)
で System.Windows.WeakEventManager.DeliverEventToList (System.Object、System.EventArgs、ListenerList)
で System.Windows.WeakEventManager.DeliverEvent (System.Object、System.EventArgs) で

はい、そのコードには Assert() があります。参照ソースに表示されているものを投稿します。コードについて十分に理解していないため、何が間違っていたのかを確認できません。スレッド化は、この種の問題を引き起こす良い方法であることを除けば、ObservableCollection は完全にスレッドセーフではなく、ロックによって保護する必要があります。

   // if the event isn't handled, something is seriously wrong.  This
   // means a listener registered to receive the event, but refused to
   // handle it when it was delivered.  Such a listener is coded incorrectly.
   if (!handled)
   {
       Invariant.Assert(handled,
                   SR.Get(SRID.ListenerDidNotHandleEvent),
                   SR.Get(SRID.ListenerDidNotHandleEventDetail, iwel.GetType(), managerType));
   }
于 2013-01-06T13:52:09.437 に答える
-2

不良メモリ、破損したランタイム。

これはそのような致命的なエラーです。したがって、これは.NETレベルの間違いではなく、何らかの理由でメモリが破損していることを示しています。不良メモリ、不良電源、またはメモリを破損した非管理対象部分のプログラムエラーである可能性があります。または、ランタイムのエラー(JITレベル、つまりアセンブラーレベルを処理する部分、またはWPF /ネイティブ領域)ですが、どういうわけかそれを疑っています。

ところで、エラーのタイプなしでエラーの説明を投稿するのはあまり賢明ではありません。

于 2013-01-06T11:38:32.380 に答える