还有我想几秒钟执行一次循环,具体时候可以控制,传一个参数进去,想多长时间就多长时间执行一次循环!
请大家帮忙想想怎么做。
17 个解决方案
#1
循环中写
Sleep(毫秒);
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/
*****************************************************************************
欢迎使用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里面每秒钟执行一次。
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循环
不要在主线程中加入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!
建议用OnTimer!
#17
初学者路过学习。
#1
循环中写
Sleep(毫秒);
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/
*****************************************************************************
欢迎使用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里面每秒钟执行一次。
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循环
不要在主线程中加入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!
建议用OnTimer!
#17
初学者路过学习。