• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

질문이 있습니다

21.07.18 10:51 작성 조회수 436

0

서버

Unhandled exception. System.InvalidOperationException: Collection was modified; enumeration operation may not execute.

   at System.Collections.Generic.List`1.Enumerator.MoveNextRare()

   at System.Collections.Generic.List`1.Enumerator.MoveNext()

   at ServerCore.Session.send(List`1 list) in C:\Users\bekna\source\repos\Server\ServerCore\Session.cs:line 91

   at Server.GameRoom.Flush() in C:\Users\bekna\source\repos\Server\Server\GameRoom.cs:line 45

   at Server.Program.<>c.<Main>b__2_1() in C:\Users\bekna\source\repos\Server\Server\Program.cs:line 29

   at ServerCore.JobQueue.Flush() in C:\Users\bekna\source\repos\Server\ServerCore\JobQueue.cs:line 51

   at ServerCore.JobQueue.Push(Action job) in C:\Users\bekna\source\repos\Server\ServerCore\JobQueue.cs:line 28

   at Server.GameRoom.Push(Action job) in C:\Users\bekna\source\repos\Server\Server\GameRoom.cs:line 38

   at Server.Program.Main(String[] args) in C:\Users\bekna\source\repos\Server\Server\Program.cs:line 29

클라이언트

System.InvalidOperationException: Collection was modified; enumeration operation may not execute.

   at System.Collections.Generic.List`1.Enumerator.MoveNextRare()

   at DummyClient.SessionManager.SendForEach() in C:\Users\bekna\source\repos\Server\DummyClient\SessionManager.cs:line 24

   at DummyClient.Program.Main(String[] args) in C:\Users\bekna\source\repos\Server\DummyClient\Program.cs:line 29

패킷 모아보내기 강의를 보고있고 프로그램을 실행하면 이런 예외가 뜨던데 혹시 이게 무슨 예외일까요?

답변 1

답변을 작성해보세요.

0

Collection was modified;

이쪽 에러는

for (var item in itemList)
{
 ...
}

요렇게 뭔가를 순회하는 도중,
내부 코드에서 다시 itemList를 건드려서 수정 상황이 발생하는 경우에 일어납니다.
아마도 Broadcast를 하는 도중에 클라 연결이 끊겨
그것을 다시 Session 목록에서 제거하는 코드가 실행된 것으로 의심되지만
위처럼 에러만 보고 정확히 판별할 수는 없습니다.
지금은 어차피 간단한 네트워크 기능을 테스트 하는 것이고
컨텐츠 다룰 때 그런 세세한 부분은 따로 잡으면 되니 지금은 넘어가셔도 됩니다.