1

我有一个 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();
  }
}

堆栈如下所示:

堆

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

4

1 回答 1

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();
  }
  }
}
于 2013-01-31T16:49:37.583 回答