|
또 질문 드리네요...
빌더를 한동안 멀리 하다 하니 궁금한 것들이 한꺼번에 쏟아져내립니다.. ^^;
오늘의 궁금한 점입니다.
루프를 돌면 사용자 인터페이스가 먹통이 되는 경우가 많습니다.
제가 하는 것을 예로 들면..
시리얼 장치로 어떤 명령을 내리고 응답이 오길 기다립니다.
while 문을 돌면서 입력 버퍼에 원하는만큼의 문자가 들어오길 기다리는데...
그냥 루프를 돌면 입력 버퍼로 데이터 수신이 안되더군요.
예를 들어... CPort를 이용한다면..
while(ComPort->InputCount() < 5);
이런 문장이 있다면 여기서 무한 루프에 빠져버립니다.
그래서
while(ComPort->InputCount() <5)
Application->HandleMessage();
라고 수정해줍니다.
이런 함수가 타이머로 정기적으로 호출된다면...
메시지를 처리하는 과정에 다음 타이머 인터럽트가 걸릴 수 있습니다.
이런 동작이 짬뽕이 되면 프로그램을 종료시켜도 종료가 안되고 먹통이 되는 경우가 빈번하더군요.
이런 동작이 필요할 때 쓰레드 말고 다른 좋은 방법이 없을까 해서 문의드립니다.
쓰레드를 공부해야 하는데 공부해서 만들 시간이 없어서 꽁수를 쓰고 있습니다. ^^;
그리고 ProcessMessage와 HandleMessage 함수의 용도의 차이가 헤깔리네요.
전자의 경우 프로그램이 메시지를 처리하도록 인터럽트를 거는거고...
후자는 윈도우가 메시지를 처리하도록 하는 건데...
아무래도 Windows에 대한 이해가 부족해서 그렇겠지요.. ^^;
명쾌한 해설 부탁드립니다.. (__)
|