自己写了个小程序,有个死循环我放到后台去处理,在我自己电脑上运行都好好的 ,拿到别人电脑上去运行,界面就卡了。什么情况

解决方案 »

  1.   

    DWORD WINAPI CCOMDlg::htest(LPVOID lpParameter) 
    {
    // TODO: Add your control notification handler code here
       
        int i=((HTEST*)lpParameter)->i;
    HWND hwnd=((HTEST*)lpParameter)->hwnd;    
    while(1)
    {
                          ::SendMessage(hwnd,WM_STEPT,NULL,NULL);   Sleep(4000); ::SendMessage(hwnd,WM_STEPW,NULL,NULL);
            Sleep(2500); }
    return 0;

    }
      

  2.   

    两台机器的操作系统一样吗,我曾经有程序在windows SERVER系统中跑就很卡
      

  3.   

    在线程中sleep,主界面死?还没遇到过,可以用peekmessage来让出cpu时间。
      

  4.   

    循环里加发送消息,可能会很面,改成普通的调用函数的形式会快些。
    还用循环里的Sleep在这里是干什么用的?
      

  5.   

    还是看你处理这两个消息WM_STEPW,WM_STEPT的地方的 代码吧
      

  6.   

    这个是你的ui线程吗?Sleep弄得你一卡一卡
      

  7.   

    你每次循环都sleep 4秒,无论在哪都卡才对
      

  8.   

    ui线程里sleep都会卡,界面假死。
      

  9.   

    Sleep(2500); 这样用.一定会有问题的.
    #include "ENtime.h"//每一帖起始时间
    void ENtime::countGetTickCount()
    {
    IniFrameDelay=GetTickCount();//获得豪秒
    // cout<<"IniFrameDelay:"<<IniFrameDelay<<endl;
    }//计算每一帖帖速
    void ENtime::countFrameSpeed()
    {
    FrameDelay=GetTickCount() - IniFrameDelay;//每一帖的帖速
    // cout<<"FrameDelay:"<<FrameDelay<<" SetSpeedValue:"<<SetSpeedValue<<endl;
    }
    //控制相对帖速
    int ENtime::setFrameSpeed(float speed)
    {
    SetSpeedValue=speed;//设置帖速
    return 1;
    }//获取相对帖速值
    int ENtime::getFrameSpeed()
    {
    return SetSpeedValue;
    }
    //设置sleep
    bool ENtime::FrameSleep()
    {
    FrameDelay=GetTickCount() - IniFrameDelay;//每一帖的帖速
    if(FrameDelay < SetSpeedValue)
    {
    ::Sleep(SetSpeedValue - FrameDelay);//主动放弃CPU使用时间
    // ::Sleep(SetSpeedValue);//主动放弃CPU使用时间
    return 0;//帖速不合符要求
    }
    return 1;//帖速合符要求
    }