在线程里面用了Sleep(50),就是每隔50毫秒刷新一次图片,可是实际运行中,刷新间隔远大于50毫秒,我先后改了Sleep后面的数值,发现,只要Sleep后面的数大于1000时刷新时间就是我设置的时间,小于1000,不管你设置的是多少,刷新时间都在1秒左右,这是怎么回事?

解决方案 »

  1.   


    UINT ThreadDraw(LPVOID param)
    {
    ImageInfo* m_image=(ImageInfo*)param;
    while (isStart)
    {   
    CDC *pDC=m_image->pWnd->GetDC();
    Graphics graph(pDC->GetSafeHdc());
    srand(time(NULL));
    int m_rand=rand()%m_image->m_ImagePathAry.GetCount();
    CString temp=m_image->m_ImagePath+L"\\"+m_image->m_ImagePathAry[m_rand];
    Image image(temp);
    graph.DrawImage(&image, 60, 40,330,300);
    m_image->pWnd->ReleaseDC(pDC);
    //Sleep(10);
    }
    return TRUE;
    }
      

  2.   

    sleep很不准啊,短间隔就是个大概其。用WaitForSingleObject吧,这个比较准。
      

  3.   

    看看CPU的占用情况。有可能画图本身就用了1秒,然后再sleep 10ms,这样sleep就感觉没效果。估计会看到sleep越小(小于1000),CPU越高。
      

  4.   

    sleep WaitForSingleObject 的精确度 大概只有30ms左右。