본문 바로가기

Software/C# (.NET Framework)

Dictionary 사용 중, System.IndexOutOfRangeException 관련

반응형

C#의 Collection 중에 하나인, DICTIONARY 은 코딩시에 유용하게 사용 할 수 있습니다.

 

Dictionary 사용 중에 발생된 Exception인 System.IndexOutOfRangeException 을 처리하기 위해,

 

구글을 검색 하게 되었습니다.

 

1. 발생 환경

  

 

 

- TcpListener 를 이용하여 수신 받은 소캣을 별도의 클래스를 통하여 관리하는 기능을 구현하고자, clientSocket 넘겨받은 CommHandleCRT를

  Dictionary로 서 관리하고자 하였습니다.

 

- 발생된 Exception ( System.IndexOutOfRangeException ) 은 맨 마지막 줄에서 발생이 되었습니다.

 

2. 검색

 

   출처 : http://stackoverflow.com/questions/1920864/when-does-a-dictionary-throw-an-indexoutofrangeexception-on-add-or-containskey

 

- 검색을 통하여 얻은 글로서, dictionary는  thread safe를 보장 하지 않는 것으로 나와있습니다.

  Any Instance members are not guaranteed to be thread safe. ( 어떠한 인스턴스 맴버도 쓰레드 세이브가 보장되지 않습니다. )

 

 

- 실제로 제가 구현해 놓은 다른 코드 부분을 봐도, thread safe 처리를 하였는데 유독 이 부분만 안 해놓은 상황이였습니다.

 

  

 

 

 

3. Thread Safe 처리를 하여서 문제를 해결 하였습니다.

 


2014-04-30 --------------------------------------------------------------------------------------------------------


1. thread safe 를 보장하여 주는 ConcurrentDictionary  를 사용하여 처리를 할 수도 있습니다. 

  성능상의 이슈가 고려사항으로 생각이 되지 않을 경우에는, 사용시 좀 더 편리한( thread safe 를 생각할 필요가 없는 )

  코딩이 될 것 같습니다.  

반응형