下面代码运行发生错误提示;
错误提示为<其他信息: 线程间操作无效: 从不是创建控件“ProgressBar1”的线程访问它。>
如何成功嗲用进度条呢呢
Public Class Class1
Private ProgressBar1 As ProgressBar
Public Property NewProperty() As ProgressBar
Get
Return ProgressBar1
End Get
Set(ByVal value As ProgressBar)
ProgressBar1 = value
End Set
End Property
Public Async Sub MySub()
ProgressBar1.Minimum = 1
ProgressBar1.Maximum = 10
Dim Task1 As Task(Of Integer) = Task(Of Integer).Factory.StartNew(Function()
For index1 As Integer = 1 To 10
ProgressBar1.Value = index1
Task.Delay(1000)
Next
Return 0
End Function)
Dim r As Integer = Await Task1
End Sub
End Class
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim Cla1 As New Class1
Cla1.NewProperty = Me.ProgressBar1
Cla1.MySub()
End Sub
End Class
------解决方案--------------------
线程中不允许访问ui线程的控件,你要定义个委托,然后用me.Invoke来调用委托
------解决方案--------------------
跨线程调用控件时,可以使用下面的语句
ProgressBar1.Invoke(Sub()
ProgressBar1.Value = index1
End Sub)
------解决方案--------------------
thread都不会就用task……真是无知者无畏
------解决方案--------------------
先学习下复制粘贴吧。
------解决方案--------------------
简单方案(不安全)
CheckForIllegalCrossThreadCalls = false