2

我想要的是应用程序从文本文件中读取第一行并将其输出到 textReply 文本框,然后在读取和输出下一行之前等待 X 时间。

Dim fileIn As New System.IO.StreamReader("C:\test.txt")
Dim strData As String = ""
While (Not (fileIn.EndOfStream))
    strData = fileIn.ReadLine()
    textReply.Text = textReply.Text & strData & vbCr
    System.Threading.Thread.Sleep(1000)
End While

正如你所看到的,我尝试过休眠线程(不理想,因为我希望应用程序保持响应,但那是另一回事!)但每次它读取整个文件并将大量转储到文本框中。

原因是最终它将用于与设备的串行连接,这需要时间将数据传输到设备并让设备响应发送的每条线路。

4

1 回答 1

2

您可以创建一个字符串队列,在读取文件时将每一行添加到列表中,然后您可以使用计时器对其进行轮询并将它们一次添加到您的文本框中。

Public Class Form1
    Dim myQueue As Queue(Of String) = New Queue(Of String)

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Dim fileIn As New System.IO.StreamReader("C:\test.txt")
        Timer1.Start()
        Dim strData As String = ""
        While (Not (fileIn.EndOfStream))
            strData = fileIn.ReadLine()
            myQueue.Enqueue(strData)
        End While
    End Sub

    Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
        If myQueue.Count > 0 Then
            textReply.Text += myQueue.Dequeue & vbCrLf
        End If
    End Sub
End Class
于 2012-10-20T16:12:53.243 回答