-1

우선, 코드 시작 부분에 ArrayList public ArrayList ArrivalsInApp = new ArrayList();을 선언합니다. 그런 다음 XML 파일에서 데이터를 다운로드하고 있습니다. "flight"이라는 XmlNode마다 패널을 만듭니다.InvalidOperationException 처리되지 않았습니다 - 이유가 무엇입니까?

패널을 만들 때 그 이름을 ArrivalsInApp ArrayList에 추가합니다. 패널 생성은 메소드에 있습니다. 이 방법에는 여러 가지 foreach주기와 IF 조건이 있습니다. 기술적으로 모든 것은 Panel이 생성되어야하는지 (XML인지 아닌지, 앱이 아닌지), 업데이트되었는지 (둘 다에서) 또는 삭제되었는지 (앱에서는 있지만 XML에서는 그렇지 않음) 결정합니다.

이 메서드에서는 XML로 된 모든 비행의 이름을 ArrayList에 저장합니다. 이제 foreach를 사용하여 응용 프로그램의 모든 비행 (ArrivalsInApp ArrayList 포함)이 XML에서 ALSO인지 확인합니다.

foreach (string y in ArrivalsInApp) 
{ 
if (XmlArrivals.Contains(y) == false) 
{ 
*code* 
} 
} 

은 "결정"방법이를 Form1_Load에서 호출하고, 타이머를 사용하여 매 30 초 : 나는이이 코드를 사용 않습니다. 타이머가 지정된 값에 도달하면 XML을 다시로드 한 다음 메서드를 호출합니다. 그러나 "Collection이 수정되었으며 열거 연산이 실행되지 않을 수 있습니다"라는 주석이있는 InvalidOperationException이 발생합니다. 라인 foreach (string y in ArrivalsInApp). 나는 절망적이다. 나는 이것을 일으키는 아이디어가 없다.

.exe 파일을 실행하면 (타이머가 값에 도달 한 후 프로그램을 종료하고이 오류를 표시 한 후 디버깅하는 경우), 패널을 업데이트해야하는지 여부에 관계없이 삭제됩니다 삭제되고 처리되지 않은 예외 오류가 나타납니다. 설명이 약간 혼란 스럽다면 죄송합니다. 누구나 내가 전체 소스 파일 (어쩌면 전체 프로젝트)을 게시하길 원한다면 알려 주시기 바랍니다. 그러나 현재 약 1800 줄의 코드가 있으므로 많은 설명이 필요합니다.

+0

""모음이 수정되었습니다. 열거 연산이 실행되지 않을 수도 있습니다. "- 반복하기 전에 목록을 복사하거나 컬렉션의 마지막 구성원을 검사하여 역순으로 반복합니다 ... –

+0

@MitchWheat foreach가 새로운 동일한 내용을 가진 ArrayList와 foreach에서는이 ArrayList를 사용합니까? –

+0

ArrayList? .NET의 어떤 버전을 사용하고 있습니까? –

답변

1

"Collection이 수정 됨 : 열거 연산이 실행되지 않을 수 있습니다."라는 설명이있는 InvalidOperationException이 발생합니다.

설명은 오류 메시지에 있습니다. 컬렉션 (이 경우 'ArrivalsInApp')은 루프 중에 수정되었습니다. 당신이 그것에 무언가를 추가했거나 무언가를 제거했는지.

컬렉션을 반복하고 동시에 수정하려면 컬렉션의 복사본을 먼저 가져 와서 원본을 수정하는 동안 복사본을 반복하고 싶습니다.

복사본을 만들 수있는 가장 쉬운 방법은 사용하는 것입니다 Linq를하고 ToArray() 또는 ToList() 파일의 상단에

, 그렇지 않은 경우 이미 존재 : 다음

using System.Linq; 

foreach 문법에서 다음과 같이 할 수 있습니다.

foreach(string y in ArrivalsInApp.ToArray()) 
{ 
    // code to do stuff. 
} 
+0

방금 ​​ArrayList를 사용하고 있다는 것을 깨달았습니다. LINQ가 사전 제네릭이었고 모든 것이 객체이기 때문에 LINQ가 어떻게 반응하는지 잘 모릅니다. ArrivalsInApp.Cast () .ToArray()와 같이 처리해야 제대로 처리 할 수 ​​있습니다. –

+0

예! 그것은 작동합니다! 정말 고맙습니다! :) –

관련 문제