我试图确定自上次检查以来,控制台应用程序是否经过了五秒钟。我认为我的逻辑有些偏离,我不知道如何解决。

程序启动时,我的lastCheck变量首先为0。它负责保存“旧时光”。
LastCheckCheckSeconds()更新,这为其赋予了新的“旧时光”

如果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集放入循环中进行了修复。

08-17 03:18