【发布时间】:2012-08-01 02:54:01
【问题描述】:
试图了解后台工作人员:)
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 个内容 显示当前系统负载的进度条 按百分比显示负载的文本标签 还有一个时钟
我知道我可以用一个简单的计时器来完成所有这些,但是当我添加其他计时器时,它往往会使表单变得迟缓,所以我想学习如何拍摄我想做的大部分事情进入后台线程。
我对这一切都很陌生,所以我不知道如何调用这些东西并对其保持线程安全,因此我收到一个错误 [当然,这就是我在这里问的原因 :)] 说 "vb.net 跨线程操作无效控件'progressbar1' 从一个线程访问,而不是它调用的线程"
或类似的东西。
使用我提供的代码示例如何让后台线程更新表单的进度条和 % 标签?
TIA
【问题讨论】:
标签: .net vb.net winforms progress-bar backgroundworker