我有以下使用 System.Timers.Timer 的场景。
创建一个 Timer 对象并分配方法
_JobListener.Enabled = false;
_JobListener.Elapsed += (this.JobListener_Elapsed);
在 JobListener_Elapsed 中,我创建了另一个线程来运行一些函数。
JobListener_Elapsed
{
//stop the timer
_JobListener.Enabled = false;
System.Threading.Thread pollThread = new Thread(JobListener_ElapsedAsync);
pollThread.Start();
//join to the main timer thread
pollThread.Join();
//restart the timer
_JobListener.Enabled = true;
}
在 JobListener_ElapsedAsync 中,我记录了计时器启用状态。
private void JobListener_ElapsedAsync()
{
try{
log Timer.Enabled
some other code
}finally
{
_JobListener.Enabled = true;
}
}
但是,我可以看到有些时候,它可以看到计时器状态为真,这是错误的。当 JobListener_ElapsedAsync 正在运行时,应停止计时器。
任何的想法?