inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

C# TCP/IP 소켓 프로그래밍

로그인

22:38 메세지 박스가 안뜨는 문제

해결된 질문

412

rine889

작성한 질문수 3

1

 실습을 진행하다 22:38에 떠야하는 메시지 박스가 안뜨는 문제가 발생하여 글 남깁니다.

디버깅을 통해서 알 수 있는 사실은 정상적으로 서버에서 SendAsync 한 데이터를 클라이언트 Singleton의 ReceiveAsync 메서드에서 받는다는 사실입니다. ( 스레드 풀의 작업자 스레드가 응답받습니다. )

하지만, LoginForm의 주 스레드와 작업자 스레드는 병렬적으로 실행되며 LoginForm의 roomList.ShowDialog()가 호출되는 순간 ReceiveAsync 를 실행하던 작업자 스레드가 중단됩니다.

결국, MessageBox.Show(packet.Code.ToString()); 가 호출되기 전에 작업자 스레드가 중단되며, 메시지 박스가 뜨지 않습니다.

왜 해당 작업자 스레드가 종료되는 지 궁금합니다.

 

header의 크기를 잘못 지정한 문제였습니다.

header의 크기를 2로 지정하여 해당 크기만큼만 Receive 소켓에서 읽어야 했는데, 그 이상 읽어서 이후 ReceiveAsync에서 더 이상 읽을 데이터가 없기 때문에 스레드가 중단된 것이었습니다. ㅡㅜ

C# tcpsocket tcpip

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

rine889님의 질문에 대한 직접적인 해결 방법을 제공하는 기존 답변은 찾지 못했습니다. 그러나, 문제의 근본적 원인을 파악하고 해결할 수 있는 방향성을 제시하는 관련 질문과 답변을 추천해드립니다.

질문하신 상황에서 “ReceiveAsync” 메서드가 중단되는 경우, 이는 클라이언트와 서버 간의 비동기 통신 과정에서 발생할 수 있는 문제입니다. 비동기 메서드가 완료되기 전에 다른 UI 작업(예: ShowDialog)에 의해 주 스레드의 실행 흐름이 변경되었을 때 발생할 수 있습니다. 이러한 상황에서, 작업자 스레드와 UI 스레드 간 올바른 동기화가 이루어지지 않으면 예상치 못한 행동이 발생할 수 있습니다.

기존 답변 중에는 UI 스레드와 작업자 스레드 간의 동기화 문제를 다룬 내용이 있을 수 있으므로, 이를 참고해보시는 것이 도움이 될 수 있습니다.

특히, 방만들기, 방 목록 새로고침 강의 중 크로스스레드 문제 관련 질문과 답변이 유용할 수 있습니다. 기존 스레드와 UI 스레드 간의 작업을 적절히 조정하는 방법이 포함되어 있을 수 있습니다. 질문의 세부적인 상황과 정확히 일치하지 않을 수도 있으나, 비슷한 문제의 해결 방안을 찾는 데 도움이 될 것입니다.

방만들기, 방 목록 새로고침 강의 중 크로스스레드 문제에서는 UI 컨트롤에 접근할 때 발생할 수 있는 크로스 스레드 문제와 그 해결책에 대해 언급되어 있습니다. 이 문제는 UI 컨트롤을 안전하게 업데이트하기 위해 UI 스레드를 올바르게 활용해야 한다는 점에서 rine889님의 상황과 관련이 있을 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

소스를 받을 수 있는 링크가 있을까요?

0

48

2

프로덕션 부분 사용 불가

0

60

2

접근지정자

0

56

2

섹터2 5강 Authconfig 문의

0

40

1

in-app purchasing 버튼의 install 버튼이 비활성화되어있을때 어떻게 해결해야하나요 ?

0

47

2

유니티 제외 설치한 프로그램들 및 파일 삭제 방법

0

46

1

깃허브에서 콤피유아이 매니저 설치하는게 안됩니다.

0

63

2

5강, 오류 수정과 관련해서

0

62

2

컴퓨터를 껐다가 클로드 코드 다시 키는 방법 알려주세요.

0

52

1

Pivot을 마우스로 클릭하고 드래그해도 움직이 않아서 혹시 아시는 부분이 있나 해서 문의 남깁니다.

0

38

1

클로드에 텍스트 없이 이미지만 보낼경우 에러가 생깁니다

0

65

2

클로드 코드 API 요금관련 질문

0

82

1

카메라가 많아지면 렌더링 비용이 커지나요?

0

38

1

3:56에 폰트 불러온 과정이 궁금합니다 ㅠㅠ

0

64

3

프로젝트가 더 이상 지원되지 않는 .NET 6.0을 대상으로 할 때

0

346

2

Tap강의에서 6분9초에 ReceiveAsync에 매개변수 e가 필요하다는 에러

0

121

1

EAP강의에서 어떻게 여러개 클라이언트를 띄우는지 궁금합니다

0

140

1

에러 관련하여 질문 있습니다.

0

311

1

에러에 관한 질문입니다.

0

1201

1

크롬으로 서버에 접속은 되지만 response되지 않는 이유가 궁금합니다

0

1801

1

예제소스 제공 원합니다.

0

384

1

5:34 질문 있습니다.

0

494

1

방만들기, 방 목록 새로고침 강의 중 크로스스레드 문제

0

597

1

9:45 질문 있습니다.

0

587

1