执行代码时更新textbox.text值

时间:2018-11-22 09:52:39

标签: vb.net multithreading

如果我使用:Label1.Invoke(Sub() Label1.Text = "Test"),则此更新成功,但是,如果我尝试这样做:Txt_Response.Invoke(Sub() Txt_Response.Text = "Test"),则仅在其余代码已执行且线程空闲之后,文本才会更新。

是否有一种简单的方法来完成此任务而没有任何额外的负担?

1 个答案:

答案 0 :(得分:1)

我不想长途跋涉,但我想我需要这样做!

基本上是在下面的修复程序中,我已经添加了提供控件的功能,因此它对所有内容都是动态的,但是出于这个问题,我将为文本框提供它。

Private Delegate Sub ResponseUpdateEventHandler(ByVal message As String)
    Private Sub UpdateResponseBox(ByVal message As String)
        If Txt_Response.InvokeRequired Then
            Txt_Response.Invoke(New ResponseUpdateEventHandler(AddressOf UpdateResponseBox), New Object() {message})
        Else
            Txt_Response.AppendText(message + Environment.NewLine)
        End If
    End Sub

然后只需使用UpdateResponseBox("Connecting to device, Please wait...")

进行呼叫