读书人

Invoke的有关问题折磨一天了也没找到

发布时间: 2012-08-30 09:55:54 作者: rapoo

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)
...


读书人网 >VB Dotnet

热点推荐