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

时间:2022-11-28 17:24:03
我现在有一个循环,想让FOR循环几秒钟执行一次,而不是一下子就执行完毕,如何实现。
还有我想几秒钟执行一次循环,具体时候可以控制,传一个参数进去,想多长时间就多长时间执行一次循环!
请大家帮忙想想怎么做。

17 个解决方案

#1


循环中写
Sleep(毫秒);

#2


时间精度要求不是太高的话,这个就行了

void func(int elpsSecond)
{
    for (int i=0; i<1000000; i++)
    {
        Sleep(elpsSecond*1000);
    }
}

#3


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

http://feiyun0112.cnblogs.com/

#4


你的这样的功能实现用FOR不是最好的

#5


我的代码里这样的。

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里面每秒钟执行一次。

#6


多线程中Sleep(XXX);,WaitForSingleObject(XXX, ...);

#7


另外新建一个线程,可以在此线程添加Sleep
不要在主线程中加入Sleep,会卡死的,还降低效率,对于你的for循环

#8


WaitForMultipleObjects试试 

#9


总得用到Sleep吧,先试试吧,传个参数,控制一下Sleep的时间,也就是你要的执行时间间隔了

#10


用Sleep() ....

#11


看看你机器的主频。倒数就是周期。周期*X=1秒。算出X即可。

#12


最简单的就是使用API函数Sleep

#13


如果不讲究,可以写个空循环,造个延时……

#14


建议你看一下timer事件,你再ontimer中写入你的循环函数,然后再你向执行循环的事件中settimer一下,再sertimer的时候你可以自定义timer事件的循环时间,设置这个循环时间你应该很容易就能控制了.

#15


为什么不可以用定时器呀.

#16


最好不好要主线程中使用Sleep,时间长的话会造成阻塞的。
建议用OnTimer!

#17


初学者路过学习。

#1


循环中写
Sleep(毫秒);

#2


时间精度要求不是太高的话,这个就行了

void func(int elpsSecond)
{
    for (int i=0; i<1000000; i++)
    {
        Sleep(elpsSecond*1000);
    }
}

#3


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

http://feiyun0112.cnblogs.com/

#4


你的这样的功能实现用FOR不是最好的

#5


我的代码里这样的。

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里面每秒钟执行一次。

#6


多线程中Sleep(XXX);,WaitForSingleObject(XXX, ...);

#7


另外新建一个线程,可以在此线程添加Sleep
不要在主线程中加入Sleep,会卡死的,还降低效率,对于你的for循环

#8


WaitForMultipleObjects试试 

#9


总得用到Sleep吧,先试试吧,传个参数,控制一下Sleep的时间,也就是你要的执行时间间隔了

#10


用Sleep() ....

#11


看看你机器的主频。倒数就是周期。周期*X=1秒。算出X即可。

#12


最简单的就是使用API函数Sleep

#13


如果不讲究,可以写个空循环,造个延时……

#14


建议你看一下timer事件,你再ontimer中写入你的循环函数,然后再你向执行循环的事件中settimer一下,再sertimer的时候你可以自定义timer事件的循环时间,设置这个循环时间你应该很容易就能控制了.

#15


为什么不可以用定时器呀.

#16


最好不好要主线程中使用Sleep,时间长的话会造成阻塞的。
建议用OnTimer!

#17


初学者路过学习。