2013-10-17 5 views
0

를 반복하면서 어떤 이유로이 예외가 발생합니다 :설정 특성 나는 SortedDictionary가 정의한 그것을

DoQCsCalculations: error while calculating calced tags 
System.InvalidOperationException: Collection was modified after the enumerator was instantiated. 
    at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource) 
    at System.Collections.Generic.SortedSet`1.Enumerator.MoveNext() 

이제 값을 변경하지 않겠습니다. ry, 사전을 사용하는 다른 스레드가 없습니다.

왜이 오류가 발생합니까?

덕분에, 오메르

+0

어떤 속성을 정렬하고 있습니까? –

+0

@RobG, SortedDictionary는 키별로 정렬하며이 기본 정렬 동작을 사용하고 있습니다. –

+0

@VladimirFrolov, 값을 변경하지 않고 그 내부의 속성 만 –

답변

1

사전 자체의 값을 변경하면이 예외가 발생하지 않습니다. 해당 예외에 대한 키 쌍을 추가하거나 제거해야합니다.

키를 돌연변이해도이 예외가 발생하지는 않지만 항목을 올바르게 찾을 수 없으므로 (잠재적으로) 올바르게 작동하지 않습니다.

호출하는 함수가 사전에 쌍을 추가하는 경우 이상적으로 메서드에서 해당 키 쌍을 반환해야하며 호출자는이 값을 저장하고 루프가 끝난 후 루프 끝에 추가 할 수 있습니다. 열거하는 동안 사전을 돌연변이.

+0

나는 실제 버그를 아직 찾지 못했지만 문제는 어딘가에있는 사전 항목이 변경된다는 것을 확신하기 때문에 답을 받아 들인다. –

-1

단순히보다는 사전을 통해 반복은 키를 통해 반복하고 사전에 인덱스로 키를 사용합니다.