MSG msg;
COleDateTimeSpan  end_time ;
COleDateTime  start_time ;while(end_time.GetTotalSeconds()  <=  PSLEEP)  
{  
    GetMessage(&msg,NULL,0,0);  
    TranslateMessage(&msg); 
    DispatchMessage(&msg); 
    end_time = COleDateTime::GetCurrentTime() - start_time;  
}请问如果大量且长时间使用以上代码,会有什么不良影响,我在做通讯时用了以上代码代替了SLEEP,但是在通讯过程中,有时会报错。比如我一个小时内连续调用以上代码,系统有可能出错吗?

解决方案 »

  1.   

    比较耗费资源
    而且应该用GetTickCount()
      

  2.   

    不要用while循环。宁可用::WaitForSingleObject 等待事件或信号。
      

  3.   

    你可以大致设置一个定时,在定时处理函数里面检查end_time.GetTotalSeconds() 与 PSLEEP
    的值的大小的比较,如果到达,发送一个消息或重置一个事件信号(SetEvent),做系统该做的事。
      

  4.   

    GetTickCount() 和.GetTotalSeconds()  有什么区别
      

  5.   

    GetTickCount是直接返回windows启动后的毫秒数,你的需求用这个更好
      

  6.   

    是不是把上面程序的GetTotalSeconds() 替换成 GetTickGount() 就行了。对我的需求。