大家好,我的主程序中有个Timer,每五秒触发一次Timer_Tick方法,为了保证同一时间只有一个Timer_Tick方法被执行,所以在Timer_Tick的开头便写了Timer.Enable=false;然后在Timer_Tick的结尾写Timer.Enable=true;Timer_Tick()
{
    Timer.Enable=false;    SendMessage();    Timer.Enable=true;
}SendMessage()方法中,调用了一个dll中的发送信息的方法A,而这个方法A,有一定几率彻底阻塞(是这个dll的BUG,而我又无法改变),所以一出现这种情况,本次的Timer_Tick()就彻底卡在这里了。为了解决这个问题,我在SendMessage中,又起了一个新的计时器Timer_TimeOut,在执行方法A之前开始计时,如果A可以在短时间内执行过去,则关闭Timer_TimeOut。如果卡在了A处,则Timer_TimeOut到60秒后,就可以通知主程序,本次Timer_Tick()卡死了。接下来,我就可以在Timer_TimeOut_Tick中再次设置Timer.Enable=true;即可再次启动新的Timer_Tick()。问题来了,当我在Timer_TimeOut_Tick中再次设置Timer.Enable=true;启动新的Timer_Tick()后,第一个启动的Timer_Tick方法,会被系统回收吗?我不希望这个Timer_Tick一直卡在那里,否则,很有可能,会产生一堆阻塞的Timer_Tick方法。谢谢大家。