MFC 线程内延时问题

单击按钮后,创建线程
     

void CRandom_CreatDlg::OnButtonStart() 
{
// TODO: Add your control notification handler code here
if (!image.isStart)
{
image.isStart=true;
pThread=AfxBeginThread(ThreadDisplay,&image,THREAD_PRIORITY_NORMAL);
}
else
image.isStart=false;
}

线程函数

UINT ThreadDisplay(LPVOID param)
{
ImageInfo *pImage=(ImageInfo*)param;
if (pImage->m_ImagePathAry.GetSize()==0)
{
return FALSE;
}
while(pImage->isStart)
{   
srand(time(NULL));
        CDC *pDC=pImage->pWnd->GetDC();
Graphics graph(pDC->GetSafeHdc());
int m_rand=rand()%pImage->m_ImagePathAry.GetSize();
WCHAR* path=pImage->m_ImagePathAry[m_rand].AllocSysString();
Image image(path);
graph.DrawImage(&image,pImage->rc.left,pImage->rc.top,pImage->rc.right-pImage->rc.left,pImage->rc.bottom-pImage->rc.top);
DelayTime(50);
}
return TRUE;
}

延时函数

void DelayTime(DWORD dwMilliseconds)
{
LARGE_INTEGER littmp;
LONGLONG lTimeBegin;
LONGLONG lTimeEnd;
double dMinus;
double dFreq;
double dTim;
QueryPerformanceFrequency(&littmp);
dFreq=(double)littmp.QuadPart;
QueryPerformanceCounter(&littmp);
lTimeBegin=littmp.QuadPart;
do 
{
QueryPerformanceCounter(&littmp);
lTimeEnd=littmp.QuadPart;
dMinus=(double)(lTimeEnd-lTimeBegin);
dTim=dMinus/dFreq;
} while (dTim }

现在出现的情况就是,开始线程后,我自己观察了下,大概第一张图片和第二章图片之间的间隔是我设置的50毫秒,之后每张图片的显示都是1秒左右,很奇怪,不知道是为什么?

你可能感兴趣的:(MFC 线程内延时问题)