我有一个循环遍历服务器列表的函数,然后为每个服务器执行许多函数。
在每次迭代开始时,我需要计算当前进程的“步骤”(以便可以正确更新进度条),但这一行导致错误 -
Me.CurrentStepLoop = ((Me.CurrentServerLoop - 1) * Me.ServerSteps) + 1
所有三个引用属性都是整数,且值非常低(即CurrentServerLoop
最多为6,而ServerSteps
最多为20,因此CurrentStepLoop
可以是从这个等式中不再是101。
这是我得到的错误 -
mscorlib.dll中出现未处理的“System.Reflection.TargetInvocationException”类型异常 附加信息:调用目标抛出了异常。
我觉得特别奇怪的是我在Try...Catch
内有相关的行,但错误不是由我的代码处理的,而是我看到通用的Visual 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
答案 0 :(得分:0)
我发现错误及其发生的原因。
在SetSteps()
方法中,我计算Me.StepSize
,但我的确错了。改变这个 -
Me.StepSize = Me.proProgress.Maximum / Me.ServerSteps
为此解决了问题 -
Me.StepSize = Me.proProgress.Maximum / Me.TotalSteps
问题是正在设置进度条超过它的最大值,这导致了错误。感谢。