首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

Invoke的有关问题,折磨一天了也没找到解决方法

2012-08-30 
Invoke的问题,折磨一天了也没找到解决办法窗体:VB.NET codeImports System.ThreadingPublic Class form1De

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


热点排行