Вот трассировки стека:Любые идеи о том, что может привести к тому, что свойство System.Timers.Timer.set_Enabled может вызвать исключение System.NullReferenceException?
2012-03-16 19: 15: 09Z Е 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
Timer прошедший способ. WsMethodAsync вызывает метод веб-службы .asmx.
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 в обработчике событий для прошедшего события таймера, но это происходит только периодически на компьютере пользователя. Я сам не смог воспроизвести ошибку.
Сбой многопоточности, то есть, вероятно, вы получаете доступ к таймеру из нескольких потоков. – CodesInChaos
Вы должны отредактировать вопрос и добавить код. (Я проголосовал за повторное открытие) –
Почти все объекты .net могут быть записаны только из одного потока за раз. – CodesInChaos