2012-10-20 40 views
2

我想讓應用程序從文本文件中讀取第一行並將其輸出到textReply文本框,然後在讀取和輸出下一行之前等待X時間。在文本文件的ReadLine之間等待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 

正如你可以看到我已經試過睡覺線程(並不理想,因爲我想要的應用保持響應但那是另一回事!),但每次都讀取整個文件轉儲大量到文本框中。

原因是它最終將用於串行連接到設備,這需要時間將數據傳輸到設備,並使設備響應每條發送的線路。

+0

我編輯了您的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

回答

2

您可以創建一個字符串Queue,當您讀取文件時,將每行添加到列表中,然後您可以使用計時器輪詢它,並將它們逐個添加到文本框中。

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 
+0

發揮魅力。謝謝 –

+0

@JonnyWright歡迎您,很高興幫助 –