인프런 커뮤니티 질문&답변

장재범님의 프로필 이미지
장재범

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

JobQueue #1

[에러 공유] disposeed object

작성

·

323

0

args.connectedSocket을 socket으로 줄여쓰고 싶어서 이렇게 코드를 짜면 계속 disposed object 에러가 난다.

 

해결법 : socket변수를 따로 만들지 말고 루키스 선생님의 코드처럼 그냥 args에서 connectsocket을 가져와야된다.

 

https://stackoverflow.com/questions/71450166/when-is-an-object-disposed-if-it-uses-using-and-it-is-being-used-in-a-few-meth

 

영어가 미숙해서 정확히 이해는 못했지만 { }를 나갔다가 오면 문제가 생기는 듯하다

답변 1

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

Socket socket = args.ConnectSocket;으로 저장하면,
socket이 지역 변수에 들어갔다가 { } 사라지면 소멸되고
그 이외 부분에서 해당 args.ConnectSocket을 참조하는 곳이 없다보니
GC에 의해 해제되어 발생하는 문제 같네요.
(이러면 socket.RemoteEndPoint가 의미가 없어지겠죠.)

장재범님의 프로필 이미지
장재범
질문자

그러게요 ㅠ..ㅠ 계속 disposed object 에러가 생겨서 구글을 뒤적뒤적 거리다가 발견해서 해결했네요 (선생님 설명보니 그냥 기본적인 것 같아보이지만요..ㅋㅋ OTL)

혹시 같은 에러로 고민하는 사람이 있을까봐 남겨놨어요 ><

장재범님의 프로필 이미지
장재범

작성한 질문수

질문하기