Vb.net 进度条的总和值不正确

Vb.net 进度条的总和值不正确,vb.net,progress-bar,Vb.net,Progress Bar,我有一个简单的进度条代码 Dim delimiter As Decimal = 0.0 If ListOfUsers.Any() Then delimiter = 100.0 / ListOfUsers.Count End If For Each link As String In ListOfUsers counter += 1 Dim pValue As Decimal = ProgressBa

我有一个简单的进度条代码

 Dim delimiter As Decimal = 0.0
    If ListOfUsers.Any() Then
        delimiter = 100.0 / ListOfUsers.Count
    End If
For Each link As String In ListOfUsers
                counter += 1
                Dim pValue As Decimal = ProgressBar1.Value
                pValue = pValue + delimiter
                ProgressBar1.BeginInvoke(Sub() ProgressBar1.Value = pValue)
Next
 End If
由于某种原因,它的总和不准确。假设我们有
listofuser.Count=3
delimeter将获得正确的值
100/3=33.33
。现在当它求和时,得到的是
66.33
,而不是
66.66


我试着用Double,但结果是一样的。这可能很简单,我这里缺少的是什么?

进度条的值是一个整数,例如,您将该值设置为33.33,但当您从进度条中读取该值时,它返回33,因此通过将33与33.33相加,您将得到66.33

查看进度条类,Value属性是int
公共属性值为整数

进度条值是一个整数,例如,您将该值设置为33.33,但当您从进度条中读回该值时,它返回33,因此通过将33与33.33相加,您将得到66.33

查看进度条类,Value属性是int 公共属性值为整数

尝试将“Dim pValue As Decimal=ProgressBar1.Value”放在foreach循环之外

就在循环前面。

尝试将“Dim pValue As Decimal=ProgressBar1.Value”放在foreach循环之外


就在循环之前。

除非通过
调用,否则不能将
Dim pValue作为Decimal=ProgressBar1.Value调用。
调用(假设此代码在后台线程中运行)。除非通过
调用
Dim pValue作为Decimal=ProgressBar1.Value
(假设此代码正在后台线程中运行)。