Invoke的问题,折磨一天了也没找到解决办法
窗体:
- VB.NET code
Imports System.ThreadingPublic Class form1 Delegate Sub SetText() Dim x As New Class1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim a As New Thread(AddressOf TEXT2) a.Start() End Sub Public Sub TEXT2() Me.Invoke(New SetText(AddressOf x.text3)) End SubEnd Class
类:
- VB.NET code
Public Class Class1 Public Sub text3() form1.Text = "123" End SubEnd Class
上面的代码没有问题
但是看下面的代码:
窗体:
- VB.NET code
Imports System.ThreadingPublic Class form1 Delegate Sub SetText() Dim x As New Class1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim a As New Thread(AddressOf x.TEXT2) a.Start() End SubEnd Class
类:
- VB.NET code
Imports System.ThreadingPublic Class Class1 Public Sub text3() form1.Text = "123" End Sub Public Sub TEXT2() form1.Invoke(New form1.SetText(AddressOf text3))’异常:在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke End SubEnd Class
我将线程移到了类中,然后线程调用委托Invoke,结果出现异常“在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke”找遍了资料也没找到什么解决办法,哎,请达人解答一下!!!
[解决办法]
你把form1传到类中试试看?
[解决办法]
vb窗口
dim x as class1
...
x= New class1(Me)
vb class
public sub new(byval passForm1 as form1)
...