据我所知,Timer是异步运行的,所以如果应用了一个非常短的持续时间计时器,它会多次调用定时器代码,以防前一次调用尚未完成......
如果之前的调用尚未完成,我不想调用timer,因为这会导致我的程序中出现断言,因为多次调用会一次尝试共享单个资源..这会导致异常并且程序终止...
请告诉我如何将计时器调用与之前的函数调用同步..
答案 0 :(得分:1)
使用信号量。
当你开始上次通话时,按下信号量。 完成执行后的信号量。
计时器可以随时触发,它会点击信号量并等待当前任务完成,然后再尝试访问该功能。
答案 1 :(得分:0)
void OnTimer()
{
static bool inTimer = false;
if ( inTimer )
return;
inTimer = true;
.... // do things
inTimer = false;
}