vb.net 线程间传值的问题

cgy8888 2009-05-16 06:08:19
我在form1开了一个线程
td=new Thread(new ThreadStart(addressof dosomething))
td.start


public sub dosomething
dim i as integer
while 1
i=i+1
end while
end sub

我想让窗体里的label显示i的数值要怎么传递啊
...全文
171 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
AManStudio 2009-05-18
  • 打赏
  • 举报
回复
可以用Application.DoEvent() 来实现实时显示~~~~
机器人 2009-05-16
  • 打赏
  • 举报
回复
在子线程里要操作UI,需要调用控件的BeginInvoke方法。
BeginInvoke的参数是Delegate


Private intCount As Integer = 0

Private Sub ThreadWork()
While True
Dim objDelegate As MyDelegate = New MyDelegate(AddressOf Me.SetLabel)
If Me.Label1.InvokeRequired Then
Me.Label1.BeginInvoke(objDelegate)
End If

System.Threading.Thread.Sleep(500)
intCount += 1
End While
End Sub

Private Delegate Sub MyDelegate()

Private Sub SetLabel()

Me.Label1.Text = CStr(intCount)
End Sub

Private myThread As System.Threading.Thread = Nothing

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If Me.Button2.Text = "Start" Then
Dim t As System.Threading.Thread = New Threading.Thread(AddressOf Me.ThreadWork)
t.Start()
Me.myThread = t
Me.Button2.Text = "Stop"
Else
If myThread IsNot Nothing AndAlso myThread.IsAlive Then
Try
myThread.Abort()
Catch

End Try
Me.Button2.Text = "Start"
End If
End If
End Sub

16,718

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧