2016-07-02 12 views
0

ToolStripLabelのステータスメッセージを更新するバックグラウンドワーカーがいます。ただし、更新は行われていませんが、エラーはスローされません。ここで私が使用していますコードです:ProgressChangedが発射されるときVb.Netバックグラウンドワーカーが動作しないUIを更新中

Private Sub BackgroundWorker3_DoWork(sender As Object, e As DoWorkEventArgs) Handles BackgroundWorker3.DoWork 
     BackgroundWorker3.WorkerReportsProgress = True 
     Dim Counter As Integer = 0 

     Do Until BW1Running = False 
      Counter = Counter + 1 
      Threading.Thread.Sleep(1000) 
      Incident_Form.BackgroundWorker3.ReportProgress(Counter) 
      If Counter >= 100 Then 
       e.Result = False 
       Return 
      End If 

     Loop 

     If BW1Running = False Then 
      Counter = 100 
      Incident_Form.BackgroundWorker3.ReportProgress(Counter) 
     End If 
    End Sub 


Private Sub BackgroundWorker3_ProgressChanged(sender As Object, e As ProgressChangedEventArgs) Handles BackgroundWorker3.ProgressChanged 

    Me.ToolStripStatusLabel1.Text = e.ProgressPercentage.ToString 

End Sub 

何も起こりません。私はそれをデバッグし、出力ウィンドウに行を印刷しますが、そのラベルは更新されません。私は何が欠けているかについての任意のアイデア?

答えて

1

あなたは呼んでいる:だけではなくの

Incident_Form.BackgroundWorker3.ReportProgress() 

BackgroundWorker3.ReportProgress() 

あなたBackgroundWorker3_ProgressChanged方法がないでは、現在のフォームにあるのBackgroundWorkerのProgressChangedイベントにサブスクライブされていますIncident_Formフォーム。

BackgroundWorker3.ReportProgress()コールの冒頭からIncident_Formを削除してください。

+0

ありがとう:)それは小さなものです! (私は答えとしてこれを受け入れることができるまで5分待たなければならない、私は戻って受け入れるよ!) – SilverShotBee

+0

@SilverShotBee:問題ありません!たぶん、使用しているものを知るためにBackgroundWorkersに名前を付けるべきでしょうか? :) –

+0

多分私はすべきです!私はちょうどそこにデフォルトの名前を残すの習慣に落ちた、それはあなたの心の新鮮な間、しかし、数週間後にそれを解決しようと迷惑になることができます!私はプロジェクトを通してコメントを残すことにはかなり良いです! – SilverShotBee

関連する問題