У меня есть функция, которая проходит через список серверов, а затем для каждого выполняет ряд функций.Необработанное исключение при использовании арифметических операторов VB
В начале каждой итерации, мне нужно вычислить, какие «шаг» процесс в настоящее время (так что индикатор может быть обновлен правильно), но эта строка вызывает ошибку -
Me.CurrentStepLoop = ((Me.CurrentServerLoop - 1) * Me.ServerSteps) + 1
Все три упомянутых свойств являются целыми числами, а значения являются довольно низкими (т.е. CurrentServerLoop
имеет максимум 6 и ServerSteps
имеет максимум 20, так что CurrentStepLoop
может быть не более, что 101 из этого уравнения.
Здесь ошибка, которую я получаю -
Необработанного исключения типа «System.Reflection.TargetInvocationException» произошел в mscorlib.dll
Дополнительной информации: Исключение было брошено в адресат вызова.
Я нахожу это особенно странно, что у меня есть строка в вопросе внутри Try...Catch
, пока ошибка не обрабатывается мой код, и вместо этого я вижу общую Визуальная ошибку Exchange. Линия на самом деле не подсвечена, но я знаю, что, как если бы я ее прокомментировал, ошибка не возникает
Может ли кто-нибудь пролить свет на то, почему это может произойти? Благодарю.
Вот Snippit, что я считаю, является причиной проблемы, а также link to the full code -
For Each CurrentServer In Me.Servers
If bw.CancellationPending = True Then
e.Cancel = True
Exit For
Else
Try
Me.CurrentStepLoop = ((Me.CurrentServerLoop - 1) * Me.ServerSteps) + 1
Catch Ex As Exception
Dim ErrorForm As New formError(Ex)
e.Cancel = True
Exit For
End Try
MappingResult = Me.DoMapDrives(CurrentServer)
If Not MappingResult Then bw.CancelAsync() : Exit For
{...Other actions here...}
CurrentServerLoop += 1
End If
Next
Вы можете добавить обработчик необработанного исключения в свой код. Например, добавьте 'AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf HandleUnhandledExceptionEvent' в метод загрузки формы (или эквивалентной точки входа), а затем опросите исключение в этом обработчике исключений, чтобы получить дополнительную информацию о том, что происходит. На самом деле. –
Эта ошибка не вызвана типом, а заданными переменными и тем, как вы к ним обращаетесь. Пожалуйста, укажите код, в котором объявлены все переменные, и дополнительные проблемы, которые должны быть известны (например, с использованием нескольких потоков). – varocarbas
@varocarbas - я не буду включать весь код на этом этапе (это довольно много), но могу сказать, что образец в вопросе исходит из функции 'bw_DoWork()', и, следовательно, вызовы, описанные выше, встречаются в «BackgroundWorker». Кроме того, «BackgroundWorker» работает в форме, и свойства, о которых идет речь, объявляются в этой форме. Пожалуйста, дайте мне знать, если вы хотите узнать больше ... –