У меня есть функция, которая перебирает список серверов, а затем для каждого выполняет ряд функций.
В начале каждой итерации мне нужно рассчитать, на каком «шаге» находится процесс в данный момент (чтобы индикатор выполнения мог быть обновлен правильно), но эта строка вызывает ошибку:
Me.CurrentStepLoop = ((Me.CurrentServerLoop - 1) * Me.ServerSteps) + 1
Все три упомянутых свойства являются целыми числами, и их значения довольно низкие (т.е. CurrentServerLoop
имеет максимум 6, а ServerSteps
имеет максимум 20, поэтому CurrentStepLoop
не может быть больше 101 из этого уравнения.
Вот ошибка, которую я получаю -
Произошло необработанное исключение типа «System.Reflection.TargetInvocationException» в mscorlib.dll
Дополнительная информация: цель вызова сгенерировала исключение.
Я нахожу особенно странным, что у меня есть рассматриваемая строка внутри Try...Catch
, но ошибка не обрабатывается моим кодом, и вместо этого я вижу общую ошибку Visual Exchange. Строка на самом деле не выделена, но я знаю, что если я ее закомментирую, ошибка не возникает
Может ли кто-нибудь пролить свет на то, почему это может происходить? Спасибо.
Вот фрагмент кода, который, как мне кажется, вызывает проблему, а также ссылка на полный код:
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