2012-06-11 36 views
0

我只是不明白我在做什么错在这里,因为我实现了一个进度条设置为我的背景工人不再只运行一次(在某些情况下,我所看到的编码在福尔循环运行6次)进度条与后台工作第2部分

我的编码中: -

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) 

,我只是不能明白为什么在循环中我的编码不应该只运行一次,我真的很感激任何帮助。

+0

你不显示调用报告进度,等你的密码,当你说“我已经看到了福尔循环中的编码运行6次)“,你的意思是在调试器中?在进度条中?哪里? –

+0

您是否正在报告进度?那些下一个对于你的帖子对我来说毫无意义。发布您的背景工作者。 – Paparazzi

回答

2

调用For - Loop 1 to 2将运行两次。同为3 to 45 to 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 
+0

拉尔斯嗨,还有一两件事,如果我有BGWorker.ReportProgress(1),然后之后的下一个编码BGWorker.ReportProgress(3)将是不是意味着编码是20%而不是10%完成? – JackSparrow

+0

@JackSparrow你可以传递任何你想要的数字。这是你的号码。从我可以从你的代码搞清楚,你似乎必须运行10个不同的代码片段,所以如果你的进度条设置为最大值10,它会通过在运行的代码段#10的时间是有意义的,你报进度值为10,以匹配ProgressBar的最大值。如果你要运行15个不同的代码片段,那么你会在进度条的最大值为15,并保持报告进展情况1到15。 – LarsTech