Vb.net 使用VB算术运算符时未处理的异常

Vb.net 使用VB算术运算符时未处理的异常,vb.net,math,Vb.net,Math,我有一个函数,它在服务器列表中循环,然后为每个服务器执行许多函数 在每次迭代开始时,我需要计算流程当前处于哪个“步骤”(以便可以正确更新进度条),但这一行导致了错误- Me.CurrentStepLoop = ((Me.CurrentServerLoop - 1) * Me.ServerSteps) + 1 所有三个引用的属性都是整数,且值非常低(即CurrentServerLoop的最大值为6,ServerSteps的最大值为20,因此CurrentStepLoop不能超过该等式中的101

我有一个函数,它在服务器列表中循环,然后为每个服务器执行许多函数

在每次迭代开始时,我需要计算流程当前处于哪个“步骤”(以便可以正确更新进度条),但这一行导致了错误-

Me.CurrentStepLoop = ((Me.CurrentServerLoop - 1) * Me.ServerSteps) + 1
所有三个引用的属性都是整数,且值非常低(即
CurrentServerLoop
的最大值为6,
ServerSteps
的最大值为20,因此
CurrentStepLoop
不能超过该等式中的101

这是我得到的错误-

mscorlib.dll中发生类型为“System.Reflection.TargetInvocationException”的未处理异常
附加信息:调用目标已引发异常

我发现特别奇怪的是,我在一个
Try…Catch
中有一行有问题,但是错误不是由我的代码处理的,而是我看到了一般的可视交换错误。这行实际上没有突出显示,但我知道,好像我注释了它一样,错误没有发生

有人能解释一下为什么会发生这种情况吗?谢谢

以下是我认为导致问题的原因,以及-


我已经找到了错误以及它发生的原因

在方法
SetSteps()
中,我计算了
Me.StepSize
,但这样做不正确。更改此-

Me.StepSize = Me.proProgress.Maximum / Me.ServerSteps
这就解决了问题-

Me.StepSize = Me.proProgress.Maximum / Me.TotalSteps

问题是进度条设置超过了它的最大值,这导致了错误。谢谢。

您可以在代码中添加未处理异常的处理程序。例如,将
AddHandler AppDomain.CurrentDomain.UnhandledException、AddressOf HandleUnhandledExceptionEvent
添加到表单加载(或等效入口点)方法,然后在该异常处理程序中查询异常,以获取有关发生情况的更多信息。确实很奇怪。此错误不是由类型引起的,而是由给定变量以及如何访问它们引起的。请包括声明所有变量的代码以及应知道的其他问题(例如,使用多个线程)。@varocabas-我在这个阶段不包括整个代码(它相当大),但我可以告诉您,问题中的示例来自
bw_DoWork()
函数,因此上面的调用发生在
BackgroundWorker
中。此外,
BackgroundWorker
在表单上运行,相关属性在该表单上声明。如果需要更多信息,请告诉我。
CurrentStepLoop
是变量还是属性?如果是属性,setter是否执行任何操作其他事情,例如引发事件?对于
CurrentServerLoop'和
ServerSteps`.@Nico Schertler的getter,同样的问题-所有这些都是属性,getter/setter除了设置值之外什么都不做。谢谢。
Me.StepSize = Me.proProgress.Maximum / Me.TotalSteps