2013-06-19 70 views
0

我正在編寫一個程序,用於從遠程服務器讀取註銷到屏幕的內容。在RTB中更快地對文本進行顏色格式化

本程序爲每個新軟件包的底部添加1行爲接收。

目前我正在使用速度TextBox,因爲我得到每分鐘約600-2200包,RTB根本無法遵循。

我刪除了第一行,當行[]超過300行時,爲了減少內存使用量和減少速度。

問題是我真的希望線條顏色格式化,所以它更容易看到它輸出什麼,因爲流對於大多數人眼睛來說太快了。

作爲票價,我知道,只有選擇方法來RTB的顏色文本,但我想知道,如果有任何組件更好用,那麼標準實時出價,這是更可靠,然後RTB?

+0

沒有人可以讀取每秒37個消息,它看起來像模糊。試圖讓它更快是沒有意義的,它會變得更模糊,可用性更低。創建*實用*用戶界面,您的RTB問題也會消失。 –

+0

你可能是對的..我一直懶惰看到需要一個新的GUI。 主要問題是...協議我正在閱讀遠程日誌,已經超過1000個不同的軟件包,我只識別併成功分解了其中的60個。其餘的正在通過原始字節讀取ascii閱讀器。 我當前使用文本框的主要原因是讓我瞭解程序在數據中的作用,以及我應該如何繼續閱讀它們。 但是,我應該proberly開始寫他們到文件日誌,而不是 – Droa

回答

1

我認爲最好的解決方案是有一箇中間緩衝區(隊列)來存儲從包中收集的信息。

Dim _buffer as New List(Of String) 

當一個新的包到達其添加到緩衝區的末尾:

_buffer.Add("package contents") 

那麼你可以使用一個計時器讀出緩衝區的內容每隔半秒鐘和colourize文本框。

Private Event Timer_Tick 
    Do Until _buffer.Count = 0 
     rtb.Text += _buffer(0) 
     'colourise the textbox 
     _buffer.RemoveAt(0) 
    Loop 
End Sub 

您可能會遇到問題讀取和寫入單獨的線程上的緩衝在這種情況下,你可以嘗試使用SyncLock但是這可能讓你去,現在

+0

這個和使用suspendlayout和resumelayout的方式可能會得心應手:) – Droa