[개발/MFC] Sleep()함수 대신 프로그램 딜레이 시키기
개발을 하다가 보면... 어떤 조건이 true가 될 때까지 기다려야 할 때가 있다.
그렇게 하려면 loop를 사용해야한다.
그리고 대기함수인 Sleep() 함수를 사용하게 되는 경우가 생기는데
이 함수를 사용하면. 모든 메세지 처리가 중단되기 때문에
프로그램 응답 없음과 같은 애매하고 난감한 사항에 처하게 된다.
그래서 이 Sleep()이라는 함수 대신에
프로세스나 쓰레드에서 사용되는 메세지는 처리되면서 특정조건이
만족할 때까지 기다릴 수 있는 함수가 필요하다.
대기시간 동안 메세지큐에서 메세지를 확인하여 처리하면서
기다리게 해준다.
/////////////////////////////////////////////////////////////////
// 수행 대기 delay 함수(instead sleep function)
/////////////////////////////////////////////////////////////////
void CBaConApp::Wait(DWORD dwMillisecond)
{
MSG msg;
DWORD dwStart;
dwStart = GetTickCount();
while(GetTickCount() - dwStart < dwMillisecond)
{
while(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}
반응형
'IT-개발,DB' 카테고리의 다른 글
[개발/MFC] UTF8로 파일저장하기 (0) | 2012.05.02 |
---|---|
[개발/MFC] WM_TIMER 예제 (0) | 2012.05.02 |
[windows] 로그인하지 않고 실행되는 사용자 서비스 등록하기 (0) | 2012.05.02 |
[개발/MFC] "다음 계정으로 실행" 나오지 않게 만들기 (0) | 2012.04.10 |
[IT/개발] 패킷 스니퍼(Sniffer) (0) | 2012.04.08 |
댓글