怎么样在类中线程产生的事件能被主线程直接使用呢?

zdm1999 2008-10-21 12:29:32
怎么样在类中线程产生的事件能被主线程直接使用呢?

示例:
Imports System.Threading

Public Class AComponent
Public Event myEvent As EventHandler

Private Sub DoWork()
RaiseEvent myEvent(Me, New EventArgs)
End Sub

Public Sub Work()
Dim aThread As New Thread(AddressOf DoWork)
aThread.Start()
End Sub
End Class

Public Class Form1
Private WithEvents _Component As New AComponent

Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
_Component.Work()
End Sub

'AComponent 产的MYEVENT事件
Private Sub myEvent(ByVal sender As System.Object, ByVal e As System.EventArgs)
Label1.Visible = False
' 这里报错 线程间操作无效: 从不是创建控件“Label1”的线程访问它。
' 这里不想通过INVOKE去使用,我想就直接用LABEL1.VISIBLE = FALSE,在类中要怎么产生这种事件呢?
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
AddHandler _Component.myEvent, AddressOf myEvent
End Sub
End Class
...全文
93 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wood87654321 2008-10-22
  • 打赏
  • 举报
回复
楼主的代码在我那儿完全运行正常啊?
或者你这样简化些试试

Imports System.Threading

Public Class AComponent

Public Event myEvent(ByVal sender As System.Object, ByVal e As System.EventArgs)

Private Sub DoWork()
RaiseEvent myEvent(Me, New EventArgs)
End Sub

Public Sub Work()
Dim aThread As New Thread(AddressOf DoWork)
aThread.Start()
End Sub
End Class

Public Class Form1
Private WithEvents _Component As New AComponent

Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
_Component.Work()
End Sub

'AComponent 产的MYEVENT事件
Private Sub myEvent(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _Component.myEvent
Label1.Visible = False
End Sub

End Class
迈克揉索芙特 2008-10-22
  • 打赏
  • 举报
回复
貌似可以用委托的方式吧
CloneCenter 2008-10-21
  • 打赏
  • 举报
回复
一只熊猫 2008-10-21
  • 打赏
  • 举报
回复
Control.CheckForIllegalCrossThreadCalls = False

这篇文章也许有帮助
http://www.360doc.com/showWeb/0/0/996455.aspx

16,555

社区成员

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

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