2015-01-27 5 views
0

어떤 이유로 항목이 루프가 아닌데도 항목 컬렉션을 반복하여 사전에 추가하려고합니다.Dictionary에 항목을 추가하면 foreach 루프가 작동하지 않습니다.

내 코드 :

Dictionary<string, Tuple<string, string>> elementList = new Dictionary<string, Tuple<string, string>>(); 
public void AddElementList(AutomationElementCollection collection) 
{ 

    foreach (AutomationElement ele in collection) 
    { 
     elementList.Add(ele.Cached.Name, new Tuple<string, string>(ele.Cached.LocalizedControlType.ToString(), ele.Cached.AutomationId.ToString())); 
     i++; 

    } 
    MessageBox.Show(i.ToString()); 
}  

그것 전혀 MessageBox.Show에 도착하지. 일반적으로 약 52 개의 항목이 있으며, 8을 통해 반복되고 종료됩니다.

+5

디버거에서 예외를 catch하거나 중단하면 잘못된 부분이 표시됩니다. 중복 키가 삽입하려고했을 수 있습니다. –

+1

가장 좋은 추측은'ele.Cached.Name'이 중복되어 예외를 던집니다. – Haney

+0

그래 맞아, 나는 그것에 대해 생각하지 않았다니 믿을 수 없어! – Pandamonium99

답변

0

당신은 그것이 8 시간을 지나고 나서 멈춘다고 말합니다. 사전에 Add을 호출하면 이 던져 질 수 있습니다. 동일한 키를 가진 요소가 사전에 이미 있기 때문입니다.

사전에 값을 찾아 가서 키를 찾으면 같은 키가 두 개 있으면 반환 할 값을 알 수 없기 때문에 이러한 현상이 발생합니다.

관련 문제