Vb.net vb网络线程/类问题

Vb.net vb网络线程/类问题,vb.net,multithreading,Vb.net,Multithreading,嗨,伙计们,我已经发布了关于这一点的信息,我使用了答案来帮助我,但我仍然被卡住了,我真的想克服这个问题,继续我的计划。我试图用另一个线程上另一个类的新文本更新文本框。我可以让它在同一个类的另一个线程上正常工作,也可以在另一个类的同一个线程上正常工作。但不是在另一个类的另一个线程上。我的代码看起来是这样的,当它运行以不产生错误但不将测试添加到文本框时,最重要的是我对程序做了一些更改,将多行线添加到consolebox.text,然后从form2中选中console.text,它生成我添加的值,但由

嗨,伙计们,我已经发布了关于这一点的信息,我使用了答案来帮助我,但我仍然被卡住了,我真的想克服这个问题,继续我的计划。我试图用另一个线程上另一个类的新文本更新文本框。我可以让它在同一个类的另一个线程上正常工作,也可以在另一个类的同一个线程上正常工作。但不是在另一个类的另一个线程上。我的代码看起来是这样的,当它运行以不产生错误但不将测试添加到文本框时,最重要的是我对程序做了一些更改,将多行线添加到consolebox.text,然后从form2中选中console.text,它生成我添加的值,但由于某些原因这些值没有反映在consolebox中。有人请帮帮我,这样我就可以不再打扰你了。。。哈哈

Public Class Form1
Dim myform2 As New form2
Dim t As New System.Threading.Thread(AddressOf myform2.display)

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub

Private Delegate Sub ConsoleDelegate(ByVal message As String)
Public Sub console(ByVal message As String)
    If Me.InvokeRequired Then
        Me.Invoke(New ConsoleDelegate(AddressOf console), New Object() {message})
        Return
    End If
    If Me.consolebox.Text.Length > 0 Then
        If Me.consolebox.Text.Substring(Me.consolebox.Text.Length - 3, 3) = "..." Then
            Me.consolebox.AppendText(message)
        ElseIf Me.consolebox.Text.Substring(Me.consolebox.Text.Length - 1, 1) = "." Then
            Me.consolebox.AppendText(ControlChars.NewLine & timestamp() & message)
        End If
    Else
        Me.consolebox.AppendText(timestamp() & message)
    End If
End Sub

Function timestamp()
    Return "[DATE]"
End Function

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    t.Start()
End Sub
末级

公开课表格2

Public Sub display()
    Form1.console("hello")
End Sub

End Class

您必须将
Form1
的实例传递给
form2

Dim myform2 As New form2(me)
表格二:

Public class form2
    Dim _form1 As Form1

    Public New(form1 As Form1)
        _form1 = form1
    End Sub

    Public Sub Display()
        _form1.console("hello")
    End Sub
End Class

您必须将
Form1
的实例传递到
form2

Dim myform2 As New form2(me)
表格二:

Public class form2
    Dim _form1 As Form1

    Public New(form1 As Form1)
        _form1 = form1
    End Sub

    Public Sub Display()
        _form1.console("hello")
    End Sub
End Class

在类
form2
中,什么是
Form1
(类名,实例)以及如何将其传递到
form2
?我假设,因为它已经实例化,Form1.console可以正常工作,它确实转到了该代码,我跟踪了它。但这几乎就像它设置了一个你看不见的新文本框,然后把信息放在那里。我不知道你的代码是如何编译的。您正在引用一个非共享函数(
console
),就像它是共享的一样(从类而不是类的实例调用)可能与类中的
form2
重复,什么是
Form1
(类名,实例)如何将其传递到
form2
?我假设,因为它已经实例化,form1.console可以正常工作,它确实转到了该代码,我跟踪了它。但这几乎就像它设置了一个你看不见的新文本框,然后把信息放在那里。我不知道你的代码是如何编译的。您正在引用一个非共享函数(
控制台
),就像它是共享的一样(从类中调用,而不是从类的实例中调用)可能是omg的副本您是我的英雄!!!!这真的管用,老兄我已经做了好几天了。。。。请投票支持这家伙!非常感谢你!不客气,很高兴它起作用了。但是你必须了解类/成员可见性(公共、私有、共享等)[],这非常重要,将有助于更有效地使用高级技术,因为你是我的英雄!!!!这真的管用,老兄我已经做了好几天了。。。。请投票支持这家伙!非常感谢你!不客气,很高兴它起作用了。但您必须了解类/成员可见性(公共、私有、共享等)[],这非常重要,有助于更有效地使用高级技术