교착 상태 메시지

다른 스레드는 메시지를 보낼 SendMessage 함수를 호출 하는 스레드는 메시지를 받는 창 프로시저로 반환 될 때까지 실행을 계속할 수 없습니다. 수신 스레드는 메시지를 처리 하는 동안 제어를 생성 하는 경우 보내는 스레드가 계속할 수 없습니다 실행, SendMessage 돌아갑니다 기다리고 있기 때문에. 수신 스레드 다음 메시지를 보냅니다 호출 하는 스레드는 차단 하는 동안, 발생 하는 교착 상태가 발생할 수 있습니다.

수신 스레드 필요 컨트롤을 명시적으로; 양보 하지 note 다음 함수 중 하나를 호출 하는 것이 제어를 암시적으로 생성 하는 스레드 발생할 수 있습니다.

DialogBox
DialogBoxIndirect
DialogBoxIndirectParam
DialogBoxParam
GetMessage
MessageBox
PeekMessage

잠재적인 교착 상태를 방지 하려면 SendNotifyMessage 또는 SendMessageTimeout 함수를 사용 하는 것이 좋습니다. 그렇지 않으면, 창 프로시저는 InSendMessage 함수를 호출 하 여 다른 스레드에서 받은 메시지를 보낸 여부를 확인할 수 있습니다. 를 호출 하기 전에 함수 위의 목록에서 메시지를 처리 하는 동안 창 프로시저를 먼저 InSendMessage를 호출 해야 합니다. 창 프로시저 제어 항복 스레드가 함수 전에 ReplyMessage 함수를 호출 해야 합니다이 함수가 TRUE를 반환 하는 경우.

 

Index