我试图确定自上次检查以来,控制台应用程序是否经过了五秒钟。我认为我的逻辑有些偏离,我不知道如何解决。
程序启动时,我的lastCheck
变量首先为0。它负责保存“旧时光”。LastCheck
由CheckSeconds()
更新,这为其赋予了新的“旧时光”
如果LastCheck
等于1232323,并且now
变量当前等于1227323,那么我知道已经过去了5000毫秒。 (实际上,这个数字要大得多)
否则,我什么也不想发生,我想等到这五秒钟过去。
返回
inline std::vector<int> CheckSeconds(int previous, int timeinseconds)
{
//check if a certain amount of seconds have passed.
int now = GetTickCount();
int timepassed = 0;
std::vector<int> trueandnewtime;
//if the current time minus the old time is greater than 5000, then that means more than 5000 milliseoncds passed.
//therefore the timepassed is true.
if (now - previous > 5000)
timepassed = 1;
trueandnewtime.push_back(timepassed);
trueandnewtime.push_back(now);
return trueandnewtime;
}
前
storage = CheckSeconds(LastCheck, 5);
LastCheck = storage.at(1);
if (storage.at(0) == 1)
{
....blahblahblah.....
}
有人知道我在做什么错吗?我必须在某处出现逻辑错误,否则我会很愚蠢。
同样值得注意的是,这段代码处于while循环中,并在
Sleep(60);
上不断运行。这是momemnt上的一个控制台应用程序。感谢任何帮助。
最佳答案
通过将Lastcheck集放入循环中进行了修复。