Vb.net vb网络线程/类问题
嗨,伙计们,我已经发布了关于这一点的信息,我使用了答案来帮助我,但我仍然被卡住了,我真的想克服这个问题,继续我的计划。我试图用另一个线程上另一个类的新文本更新文本框。我可以让它在同一个类的另一个线程上正常工作,也可以在另一个类的同一个线程上正常工作。但不是在另一个类的另一个线程上。我的代码看起来是这样的,当它运行以不产生错误但不将测试添加到文本框时,最重要的是我对程序做了一些更改,将多行线添加到consolebox.text,然后从form2中选中console.text,它生成我添加的值,但由于某些原因这些值没有反映在consolebox中。有人请帮帮我,这样我就可以不再打扰你了。。。哈哈Vb.net vb网络线程/类问题,vb.net,multithreading,Vb.net,Multithreading,嗨,伙计们,我已经发布了关于这一点的信息,我使用了答案来帮助我,但我仍然被卡住了,我真的想克服这个问题,继续我的计划。我试图用另一个线程上另一个类的新文本更新文本框。我可以让它在同一个类的另一个线程上正常工作,也可以在另一个类的同一个线程上正常工作。但不是在另一个类的另一个线程上。我的代码看起来是这样的,当它运行以不产生错误但不将测试添加到文本框时,最重要的是我对程序做了一些更改,将多行线添加到consolebox.text,然后从form2中选中console.text,它生成我添加的值,但由
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的副本您是我的英雄!!!!这真的管用,老兄我已经做了好几天了。。。。请投票支持这家伙!非常感谢你!不客气,很高兴它起作用了。但是你必须了解类/成员可见性(公共、私有、共享等)[],这非常重要,将有助于更有效地使用高级技术,因为你是我的英雄!!!!这真的管用,老兄我已经做了好几天了。。。。请投票支持这家伙!非常感谢你!不客气,很高兴它起作用了。但您必须了解类/成员可见性(公共、私有、共享等)[],这非常重要,有助于更有效地使用高级技术