試圖瞭解背景的工人:)VB.net 2010 BackgroundWorker的更新形式進度
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
謝謝你的回覆,但是我知道的只是VB.net,我對C#的瞭解甚少,這就是爲什麼我問到vb.net的原因。雖然我明白,他們共享很多相同的語法和東西,我不知道如何將它從C#示例「轉換」爲VB。我猜你的意思是我需要某種中間工作人員從後臺進程獲取信息並使用它將信息中介到前臺表單。 – user1567394 2012-08-01 04:12:53
也需要一個workercompleted,如果它始終運行,只要窗體被加載?或者我需要在窗體關閉事件中輸入內容,以便知道殺死後臺進程?那麼如何創建事件呢? – user1567394 2012-08-01 04:16:17
如果您使用的是Microsoft Visual Basic Express,則可以將事件添加到事件窗口。下面介紹如何使用後臺工作器的鏈接http://msdn.microsoft.com/en-us/library/cc221403%28v=vs.95%29.aspx#Y0 – iSa 2012-08-01 06:14:45