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

文字列のキューを作成して、ファイルの読み取り中に各行をリストに追加し、タイマーでポーリングして、一度に1つずつテキストボックスに追加できます。

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 に答える