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