一个FOR循环,控制每几秒钟执行一次循环

wxw_wjf 2010-11-23 03:28:42
我现在有一个循环,想让FOR循环几秒钟执行一次,而不是一下子就执行完毕,如何实现。
还有我想几秒钟执行一次循环,具体时候可以控制,传一个参数进去,想多长时间就多长时间执行一次循环!
请大家帮忙想想怎么做。
...全文
2560 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingwsh 2010-11-23
  • 打赏
  • 举报
回复
初学者路过学习。
ccing 2010-11-23
  • 打赏
  • 举报
回复
最好不好要主线程中使用Sleep,时间长的话会造成阻塞的。
建议用OnTimer!
s_hhm 2010-11-23
  • 打赏
  • 举报
回复
为什么不可以用定时器呀.
xueye1986 2010-11-23
  • 打赏
  • 举报
回复
建议你看一下timer事件,你再ontimer中写入你的循环函数,然后再你向执行循环的事件中settimer一下,再sertimer的时候你可以自定义timer事件的循环时间,设置这个循环时间你应该很容易就能控制了.
lcsolitary 2010-11-23
  • 打赏
  • 举报
回复 1
如果不讲究,可以写个空循环,造个延时……
贝隆 2010-11-23
  • 打赏
  • 举报
回复
最简单的就是使用API函数Sleep
donghailiuyin 2010-11-23
  • 打赏
  • 举报
回复
看看你机器的主频。倒数就是周期。周期*X=1秒。算出X即可。
Metrosexual 2010-11-23
  • 打赏
  • 举报
回复
用Sleep() ....
极简Qt 2010-11-23
  • 打赏
  • 举报
回复
总得用到Sleep吧,先试试吧,传个参数,控制一下Sleep的时间,也就是你要的执行时间间隔了
花熊 2010-11-23
  • 打赏
  • 举报
回复
WaitForMultipleObjects试试
licaiyuren 2010-11-23
  • 打赏
  • 举报
回复
另外新建一个线程,可以在此线程添加Sleep
不要在主线程中加入Sleep,会卡死的,还降低效率,对于你的for循环
Eleven 2010-11-23
  • 打赏
  • 举报
回复
多线程中Sleep(XXX);,WaitForSingleObject(XXX, ...);
wxw_wjf 2010-11-23
  • 打赏
  • 举报
回复
我的代码里这样的。

void CGisTrack::GetGpsPath(const CList<CGisTrack::VIDEO_DATA_SHOW, CGisTrack::VIDEO_DATA_SHOW&> *listPtr)
{

POSITION pos = listPtr->GetHeadPosition();
while (pos != NULL)
{
VIDEO_DATA_SHOW gpsInfo = listPtr->GetNext(pos);

double postionY ,postionX ;
postionY = 0;
postionX = 0;
postionY = atof(gpsInfo.positionY);
postionX = atof(gpsInfo.positionX);

int intX,intY;

intY = (int)(postionY/100);
intX = (int)(postionX/100);

postionY = intY+(postionY - intY * 100)/60;

postionX = intX+(postionX - intX * 100)/60;

if(postionY != 0 && postionX !=0){
static bool bflag;
CsoGeoPoint objGP;
CsoStyle objSty;


objSty.SetPenColor(RGB(125,125,125));
objSty.SetSymbolSize(80);


objSty.CreateDispatch("SuperMap.soStyle");
objSty.SetPenColor(RGB(255,0,0));
objSty.SetSymbolSize(80);

objGP.CreateDispatch("SuperMap.soGeoPoint");

objGP.SetX(postionX);
objGP.SetY(postionY);

m_SuperMap.GetTrackingLayer().RemoveEvent(COleVariant("trackpoint"));
m_SuperMap.GetTrackingLayer().AddEvent(objGP,objSty,"trackpoint");
m_SuperMap.GetTrackingLayer().Refresh();

objSty.ReleaseDispatch();
objGP.ReleaseDispatch();

}
}
return;

}
现在想让这个WHILE里面每秒钟执行一次。
jyh_baoding 2010-11-23
  • 打赏
  • 举报
回复
你的这样的功能实现用FOR不是最好的
扁豆肉丝 2010-11-23
  • 打赏
  • 举报
回复
11111

*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)

http://feiyun0112.cnblogs.com/
matrixcl 2010-11-23
  • 打赏
  • 举报
回复
时间精度要求不是太高的话,这个就行了

void func(int elpsSecond)
{
for (int i=0; i<1000000; i++)
{
Sleep(elpsSecond*1000);
}
}
兔子-顾问 2010-11-23
  • 打赏
  • 举报
回复
循环中写
Sleep(毫秒);

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧