VB.net从另一个线程打印到文本框

时间:2014-12-13 07:29:41

标签: vb.net multithreading

我有以下代码,我想基本上复制一个不断变化的文本文件的内容并将其转储到文本框显示中,我有以下代码,但它目前无法正常工作。< / p>

If Not File.Exists(masterPath) Then
            File.Create(masterPath).Dispose()
        End If
        Try
            reader = New StreamReader(chatlog)
        Catch
            File.Create(chatlog)
            bool = False
        End Try
        If bool Then
            'Dim writer As New StreamWriter(masterPath)
            Dim text As String
            Do Until reader.EndOfStream
                text = reader.ReadLine()
                logMenu.AppendText(text & Environment.NewLine)
            Loop
            reader.Close()
            File.Delete(chatlog)
            File.Create(chatlog).Dispose()
        End If
        Thread.Sleep(1000)
    Loop

1 个答案:

答案 0 :(得分:0)

根据需要创建一个使用Invoke的新方法,如下所示:

Private Sub DisplayLogLine(ByVal text As String)
    If logMenu.InvokeRequired Then
        logMenu.Invoke(AddressOf DisplayLogLine, {text})
        Return
    End If
    logMenu.AppendText(text & Environment.NewLine)
End Sub

然后在循环中用DisplayLogLine(reader.ReadLine())调用它。

基于快速参考的答案Modifying the properties of controls from another thread in VB.net;自从我在.NET中编写多线程UI代码以来已经有一段时间了。