Timer.Stop上的随机NullReferenceException

时间:2013-01-31 16:31:37

标签: c#

我有一个System.Timers.Timer,当我调用Stop()方法时,它会随机抛出NullReferenceException。这可能发生在一个工作日大约4次。我在多台计算机上看到了这个问题。

void myTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
  if (myTimer != null) //trying to stop the exception here
  {
    myTimer.Stop(); //Null Reference Exception occurs here

    DoStuff();

    myTimer.Start();
  }
}

堆栈如下所示:

stack

最奇怪的部分是我可以立即从异常位置再次启动程序而没有任何问题。

1 个答案:

答案 0 :(得分:1)

试试这个

void myTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
  lock(this) {
  if (myTimer != null) //trying to stop the exception here
  {
    myTimer.Stop(); //Null Reference Exception occurs here

    DoStuff();

    myTimer.Start();
  }
  }
}