UI Freeze Problem
My problem is that the cpu usage becomes 100% - this is because i need
to refresh the dialog after a sleep of 10 miliseconds. but the problem
is that the sleep makes the UI freeze. I thought a workaround would be
using threads. but even after using threads and events the problem
persists - the UI still freezes. Please tell me what is going wrong
here. Here is the code listing:
void Cmalt6Dlg::OnPaint()
{
.....
.....
.......
HANDLE hEvent;
HANDLE hThread;
DWORD dwThreadID;
DWORD dwStatus;
hEvent = CreateEvent( NULL,
FALSE,
FALSE,
NULL
);
if( hEvent == NULL ) //oops!
{
printf( "CreateEvent() failed!\n" );
return;
}
hThread = CreateThread( NULL,
NULL,
(LPTHREAD_START_ROUTINE)ThreadFunction,
(LPVOID)hEvent,
NULL,
&dwThreadID
);
if( hThread == NULL ) //oops!
{
printf( "CreateThread() failed!\n" );
CloseHandle( hEvent );
return;
}
hBmp = (HBITMAP)::LoadImage(
NULL,
szFilename3,
IMAGE_BITMAP,
0,
0,
LR_LOADFROMFILE|LR_CREATEDIBSECTION
);
CBitmap* pOldBmp1;
CBitmap* pOldBmp2;
CPen *pOldPen, blackPen;
blackPen.CreatePen(PS_SOLID,1,RGB(0,0,0));
CDC* pDC = GetDC();
int count = 0;
while(TRUE)
{
dwStatus = WaitForSingleObject(hEvent,0);
if(dwStatus == WAIT_OBJECT_0 )
{
.....
.....
}
}
}//close OnPaint()
DWORD ThreadFunction( LPVOID lpArg )
{
HANDLE hEvent = (HANDLE)lpArg;
while(TRUE)
{
Sleep( 5 );
SetEvent( hEvent ); //set the event state to signalled
}
return 0L;
}