バックグラウンドワーカーを理解しようとしています:)
Imports System.Threading
Imports System
Imports System.IO
Imports System.Windows.Forms
Imports System.ComponentModel
Imports System.Text.RegularExpressions
Imports System.Text
Imports System.Diagnostics
Imports System.Drawing
Public Class CLViewForm
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
BackgroundWorker1.RunWorkerAsync()
End Sub
Function SystemLoads()
Dim PCV As Integer = Convert.ToDecimal(PerformanceCounter1.NextValue())
Me.Label5.Text = PCV & " %"
Me.ProgressBar1.Minimum = 0
Me.ProgressBar1.Maximum = 100
Me.ProgressBar1.Step = 1
Me.ProgressBar1.Value = PCV
Me.Label6.Text = Now.ToLongTimeString
Return 0
End Function
Private Sub BackgroundWorker1_DoWork(sender As Object, e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Me.Invoke(SystemLoads())
End Sub
End Class
私がやろうとしていることの基本的な要点は、プライマリ フォームの 3 つのことを更新するバックグラウンド ワーカーをロードすることです 現在のシステムのロードを示すプログレスバー パーセントとクロックでロードを示すテキスト ラベル
単純なタイマーでこれらすべてを実行できることはわかっていますが、他のタイマーを追加すると、フォームがあらゆる種類の動作が遅くなる傾向があるため、やりたいことのほとんどを背景に撮影する方法を学びたいと思いますスレッド。
私はこれらすべてに慣れていないので、これらのものを呼び出してスレッドセーフにする方法がわからないため、[もちろん、それが私がここで質問している理由です:)]というエラーが表示されます。 - スレッド操作が有効ではありません 'progressbar1' が呼び出されたスレッド以外のスレッドからアクセスされました"
またはその趣旨の何か。
私が提供したコード サンプルを使用して、バックグラウンド スレッドでフォームの進行状況バーと % ラベルを更新するにはどうすればよいですか?
ティア