我希望计时器只在上一个调用返回或完成执行时调用代码

I want that a Timer should only call the code when the previous call has returned or finished execution?

本文关键字:调用 执行 代码 返回 计时器 上一个 我希望      更新时间:2023-10-16

我所知,计时器是异步运行的,所以如果应用了持续时间很短的计时器,它会多次调用计时器代码,以防上一次调用尚未完成......

如果以前的调用尚未完成,我不想调用计时器,因为这会导致我的程序中出现断言,因为多次调用尝试一次共享单个资源......这给出了异常和程序终止...

请告诉我如何将计时器调用与其以前的函数调用同步。

使用信号量。

当您开始上一个呼叫时,沿着信号量向下。完成执行后向上显示信号量。

计时器可以随时触发,它将点击信号量并等待当前任务完成,然后再尝试访问该功能。

void OnTimer()
{
   static bool inTimer = false; 
   if ( inTimer ) 
       return; 
   inTimer = true;   
   .... // do things
   inTimer = false;
}