.net 后台工作程序进度条第2部分

.net 后台工作程序进度条第2部分,.net,vb.net,vb.net-2010,.net,Vb.net,Vb.net 2010,我只是看不出我做错了什么,因为我已经在我的后台工作程序中实现了一个进度条,它不再只运行一次(在某些情况下,我看到foor循环中的编码运行了6次) 我的编码:- My progress bar max value is set to 10. ‘ BGWorker Do Work Event For i As Integer = 1 To 2 ‘ Run code 1 Next For i As Integer = 2 To 3 ‘ Run cod

我只是看不出我做错了什么,因为我已经在我的后台工作程序中实现了一个进度条,它不再只运行一次(在某些情况下,我看到foor循环中的编码运行了6次)

我的编码:-

My progress bar max value is set to 10.

‘ BGWorker Do Work Event
            For i As Integer = 1 To 2
‘ Run code 1
Next

            For i As Integer = 2 To 3
‘ Run code 2
Next


            For i As Integer = 3 To 4
‘ Run code 3
Next

            For i As Integer = 4 To 5
‘ Run code 4
Next

            For i As Integer = 5 To 6
‘ Run code 5 
Next

            For i As Integer = 6 To 8
‘ Run code 6
Next

            For i As Integer = 8 To 9
‘ Run code 7
Next

‘ BGWorker Progress changed event
            Me.Progressbar1.Value = e.ProgressPercentage
            Me.label1.Text = String.Format("{0} % Completed", e.ProgressPercentage * 10)

我非常感谢任何帮助,因为我不明白为什么循环中的编码不应该只运行一次。

调用
For-Loop 1到2将运行两次。与
3到4
5到6
相同

您的原始代码只是:

For i As Integer = 1 To 2
  ‘ Run code 1
Next

For i As Integer = 3 To 4
  ‘ Run code 2
Next
它做了同样的事情

但是,如果只运行一次代码,听起来您根本不需要For-Loops
。如果您的后台工作人员需要执行十个步骤,请尝试调用以下十个更新:

‘ Run code 1
BGWorker.ReportProgress(1)

‘ Run code 2
BGWorker.ReportProgress(2)

‘ Run code 3
BGWorker.ReportProgress(3)

‘ etc

您没有显示调用report progress等的代码。当您说“我已经看到foor循环中的代码运行了6次”时,您的意思是在调试器中吗?在进度条中?在哪里?你在报告进展情况吗?你下一个帖子对我来说毫无意义。发布你的背景工作人员。嗨,拉尔斯,如果我有BGWorker.ReportProgress(1),还有一件事,然后在下一个编码BGWorker.ReportProgress(3)之后,这是否意味着编码完成了20%而不是10%?@JackSparrow你可以传递任何你想要的数字。这是你的号码。从代码中我可以看出,您似乎必须运行10个不同的代码段,因此,如果您的ProgressBar设置为最大值10,那么当您运行代码段#10时,您报告的进度值为10,以匹配ProgressBar的最大值是有意义的。如果您必须运行15个不同的代码段,那么您可以将ProgressBar最大值设置为15,并保持报告进度1到15。