任何人都可以在這裏幫助我。我對VB.net和線程相當新,所以我只是想弄清楚發生了什麼。vb.net線程進度條 - 線程操作無效:從其創建的線程以外的線程訪問的控制'ProgressBar1'
當我調試這個我收到錯誤
線程操作無效:控制「ProgressBar1」從比它創建的線程以外的 線程訪問。
我有點失落,爲什麼錯誤發生或如何解決它。我必須將進度條放入單獨的線程,否則GUI崩潰
Private Sub InstallTheAgent_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InstallTheAgent.Click
MsgBox("Click OK to continue to install the Agent")
Dim t As Thread
t = New Threading.Thread(AddressOf WorkInstallAgent)
t.Start()
End Sub
Private Sub WorkInstallAgent()
ProgressBarThread()
Dim DeviceLines As String() = IO.File.ReadAllLines(DynPath & "\machines.txt")
ProgressBar1.Minimum = 0
ProgressBar1.Maximum = DeviceLines.Length
Using myReader As System.IO.StreamReader = My.Computer.FileSystem.OpenTextFileReader(DynPath & "\machines.txt")
ProgressBarThread()
Do While myReader.Peek() >= 0
Dim computerName As String = myReader.ReadLine
If My.Computer.Network.Ping(computerName) = True Then
Call CopyAgent(computerName)
Call InstallAgent(computerName)
Call Agent(computerName)
Call RemoveTempSoftware(computerName)
End If
ProgressBar1.Value = ProgressBar1.Value + 1
Loop
End Using
MsgBox("Installation of the Agent Complete")
ProgressBar1.Value = 0
End Sub
Public Sub ProgressBar()
If Me.InvokeRequired Then
Me.Invoke(New MethodInvoker(AddressOf ProgressBar))
Else
Dim DeviceLines As String() = IO.File.ReadAllLines(DynPath & "\machines.txt")
ProgressBar1.Minimum = 0
ProgressBar1.Maximum = DeviceLines.Length
End If
End Sub
Public Sub ProgressBarThread()
Dim p As Thread
p = New Threading.Thread(AddressOf ProgressBar)
p.Start()
End Sub
謝謝,但是我的程序中有大約15個其他選項已經爲線程設置,因此切換到後臺工作人員是不可行的 – K20GH 2012-02-17 10:31:23