C#의 Collection 중에 하나인, DICTIONARY 은 코딩시에 유용하게 사용 할 수 있습니다.
Dictionary 사용 중에 발생된 Exception인 System.IndexOutOfRangeException 을 처리하기 위해,
구글을 검색 하게 되었습니다.
1. 발생 환경
- TcpListener 를 이용하여 수신 받은 소캣을 별도의 클래스를 통하여 관리하는 기능을 구현하고자, clientSocket 넘겨받은 CommHandleCRT를
Dictionary로 서 관리하고자 하였습니다.
- 발생된 Exception ( System.IndexOutOfRangeException ) 은 맨 마지막 줄에서 발생이 되었습니다.
2. 검색
- 검색을 통하여 얻은 글로서, 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 를 생각할 필요가 없는 )
코딩이 될 것 같습니다.
'Software > C# (.NET Framework)' 카테고리의 다른 글
wybuild .net 기반 자동 업데이트 프로그램 중 하나 (0) | 2020.04.26 |
---|---|
System.ServiceModel.Web 의 참조가 안될 때 (0) | 2014.05.12 |
[VS2010] 프로젝트 파일에 잘못된 속성이 있습니다. (0) | 2013.04.08 |
log4net (0) | 2012.05.29 |
C# 일자별 텍스트 파일 로그 소스 (0) | 2012.03.02 |