vb.net 2005关于thread的小问题

please_call_me_J 2010-06-16 03:17:22
本身我也是来学习线程的。

错误信息:线程间操作无效: 从不是创建控件“TextBox1”的线程访问它。

Public Class Form1

Protected Delegate Sub dis(ByVal i As Integer)

Protected Sub dis_num(ByVal i As Integer)
Me.TextBox1.Text = i.ToString
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim th As New Threading.Thread(New Threading.ThreadStart(AddressOf td))
th.IsBackground = True
th.Start()
End Sub
Sub td()
Dim i As Integer
For i = 1 To 3
Dim p As New dis(AddressOf dis_num)
p.Invoke(i)
i = i + 1
Threading.Thread.Sleep(1000)
Next
End Sub
End Class
...全文
177 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
兔子-顾问 2010-06-16
  • 打赏
  • 举报
回复
vb.net,我也不知道如何写的优美。这样把,给你个例子

Imports System.Threading
Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim th As New Thread(AddressOf MyThreadProc)
th.Start()
End Sub

Public Sub MyThreadProc()
'更新ui资源例子
Me.Invoke(New VoidDelegate(AddressOf UpdateText))
End Sub
Public Delegate Sub VoidDelegate()
Public Sub UpdateText()
Me.Text = "Modified by thread"
End Sub
End Class
足球中国 2010-06-16
  • 打赏
  • 举报
回复
错误提示会引用你到一个MSDN的页面上。页面上的那个代码,那个叫精典啊。
please_call_me_J 2010-06-16
  • 打赏
  • 举报
回复
就是书上提到过的更新AI?
具体是给谁用委托,你帮我改下我的代码好不呢?前辈
wuyq11 2010-06-16
  • 打赏
  • 举报
回复
用了多线程.在辅助线程上去更新主线程上的控件.应该使用委托

16,554

社区成员

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

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