这是堆栈跟踪:
2012-03-16 19:15:09Z E System.NullReferenceException:对象引用未设置为对象的实例。
在 System.Timers.Timer.set_Enabled(布尔值)
在 System.Timers.Timer.Stop()
这是代码:
定时器声明为私有成员变量。
Private _myTimer As System.Timers.Timer
初始化定时器方法。
Private Sub InitializeMyTimer()
_myTimer = New System.Timers.Timer
_myTimer.Interval = My.Settings.TimeoutSeconds * 1000
_myTimer.Start()
AddHandler _myTimer.Elapsed, AddressOf MyTimer_Elapsed
End Sub
计时器经过的方法。WsMethodAsync 调用 .asmx Web 服务方法。
Private Sub MyTimer_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs)
Try
_myTimer.Stop()
Using thisWSHelper As New WSHelper
thisWsHelp.WsMethodAsync()
End Using
_myTimer.Start()
Catch ex As Exception
LogAndShowException(ex)
End Try
End Sub
计时器必须有一个值,否则 Timer.Stop() 调用将引发异常。这是一个零星的错误,我只是想看看是否有人以前经历过这种情况,或者是否有人对可能导致它的原因有任何想法。它发生在 WinForms 应用程序中 Timer 的 Elapsed 事件的事件处理程序中,但它只是偶尔在用户计算机上发生。我自己无法重现该错误。