私は持っていclass ElementRelation { ... }
ますclass ElementRelationCollection : System.Collections.ObjectModel.ObservableCollection<ElementRelation> { ... }
そして、私はこのコードを持っています:
ElementRelationCollection a = ...;
if (a == null)
throw new Exception("a is null(???)"); // this exception is never thrown
try
{
foreach (ElementRelation relation in a) // exception is thrown here
{ ... } // never thrown here
}
catch (NullReferenceException ex)
{
string message = "Something is null here. a.Count: " + a.Count;
IEnumerator<ElementRelation> enumerator = a.GetEnumerator();
message += ", enumerator is " + (enumerator == null ? "null" : "not null");
throw new Exception(message, ex);
}
ログから、このコードが「Something is null here. a.Count: 9, enumerator is not null」というメッセージで例外をスローすることがあることがわかります。これが発生し始めると、私がiisresetするまで、ページの読み込みごとにトップが発生し続けます。
もちろん、innerexception は System.NullReferenceException であり、次のスタック トレースがあります。
at MyNamespace.MyClass.MyMethod() in c:\path\MyClass.cs:line 74
行74は言う行ですforeach (ElementRelation relation in a)
なぜこの例外がスローされるのですか?
編集:
コレクションは、バックグラウンド スレッドによって更新されることがあります。これにより、イテレーションの失敗よりも悪い問題が発生することはないと思っていましたが、コレクション全体が破損していることが判明しました。