#visual-c
#visual-c
Вопрос:
Я хочу создать класс, который поможет мне вызвать функцию, но функция будет вызывать себя до тех пор, пока не будет достигнуто условие, и внутри блока условий будет синхронизирован вызов, и он будет использовать лямбда, позвольте мне показать вам пример (он не содержит лямбда)
void RecursiveFunction()
{
static DWORD tempBlockTimer = 0; // timer
const unsigned int time_ms = 200; // delay for timer
static const int maxCalls = 14220;
static int currentCallCount = 0;
if ( currentCallCount < maxCalls ) // condition
{
tempBlockTimer = GetTickCount();
if ( GetTickCount() - tempBlockTimer >= time_ms ) // timer check
{
currentCallCount ; // count this call
/*
Do something
*/
}
RecursiveFunction(); // call function itself until condition is reached
}
}
чего я хочу добиться, так это просто вызвать InterestingFunc() только один раз, и эта функция будет вызывать someFunc() до тех пор, пока не будет достигнуто какое-либо условие
Комментарии:
1.
GetTickCount() - tempBlockTimer
почти всегда будет равно 0 или максимум 1, поскольку вы назначилиtempBlockTimer = GetTickCount()
ее непосредственно перед этим. Функция, которую вы показываете, очень быстро умрет при переполнении стека.2.
InterestingFunc
С чемSomeFunc
и как они связаны, если вообще связаныRecursiveFunction
. Ваше объяснение «чего я хочу достичь» , похоже, не имеет ничего общего с показанным кодом.3. Почему бы просто не запустить цикл, который выполняет действие, затем
Sleep
некоторое время s, а затем повторяется? Рекурсия здесь не имеет смысла.