-1

据我所知,定时器是异步运行的,所以如果应用了一个非常短的定时器,它会多次调用定时器代码,以防之前的调用没有完成......

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

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

4

2 回答 2

1

使用信号量。

当您开始上一个呼叫时,向下信号量。当你完成执行时向上信号量。

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

于 2012-06-20T18:37:07.980 回答
0
void OnTimer()
{
   static bool inTimer = false; 
   if ( inTimer ) 
       return; 
   inTimer = true;   
   .... // do things
   inTimer = false;
}
于 2012-06-20T18:36:51.950 回答