1

私はそれを機能させることができないので、私のバックグラウンドワーカーの助けを期待していました。基本的に、私にはいくつかのタスクを実行するバックグラウンドワーカーがいますが、プログレスバーとラベルを実装しようとしています。プログレスバーの最大値を10に設定し、タスクごとに移動するたびに更新します。また、進行状況を表示するプログレスバーのラベルを考えています。

Pb value = 2
20% completed

Pb value = 6
60% completed

等々。

これまでのところ、コーディング用にこれを持っています。

更新*あなたの助けからlarsに感謝します。

では、簡単な質問で、do workイベントはそのようになりますか?

Private Sub BGWorker_DoWork(ByVal sender As Object, _
                            ByVal e As DoWorkEventArgs) _
                            Handles BGWorker.DoWork
  For i as Integer = 1 to 2
    'My task code 1
    BGWorker.ReportProgress(i)
  Next

 For i as Integer = 3 to 4
    'My task code 2
    BGWorker.ReportProgress(i)
  Next

 For i as Integer = 5 to 6
    'My task code 3
    BGWorker.ReportProgress(i)
  Next

 For i as Integer = 7 to 8
    'My task code 4
    BGWorker.ReportProgress(i)
  Next

 For i as Integer = 9 to 10
    'My task code 5
    BGWorker.ReportProgress(i)
  Next
End Sub
4

2 に答える 2

5

(UIスレッドで実行されていない)プログレスバーの値を設定する代わりにDoWork、BackGroundWorkerに進行状況を「報告」させる必要があります。

Private Sub BGWorker_DoWork(ByVal sender As Object, _
                            ByVal e As DoWorkEventArgs) _
                            Handles BGWorker.DoWork
  For i as Integer = 1 to 10
    BGWorker.ReportProgress(i)
  Next
End Sub

次に、ProgressChangedイベントで、プログレスバーの値を設定できます。

Private Sub BGWorker_ProgressChanged(ByVal sender As Object, _
                                     ByVal e As ProgressChangedEventArgs) _
                                     Handles BGWorker.ProgressChanged
  Me.Pb1.Value = e.ProgressPercentage
End Sub
于 2012-06-07T23:12:34.263 に答える
4

あなたにはいくつかの問題があります:

  1. コードはコンパイルされません。
  2. どこにも作成しませんBackgroundWorker
  3. ProgressChangedイベントハンドラーを割り当てていません。
  4. イベントは一切処理しません。

を使用するには、これらすべてのことを行う必要がありますBackgroundWorker。優れた初心者向けチュートリアルは、http://msdn.microsoft.com/en-us/library/cc221403%28v=vs.95%29.aspxにあります。

于 2012-06-07T21:43:57.953 に答える