2015-11-03 55 views
0

我創建的發送命令到CMD,從CMD獲取輸出,並顯示在顏色一個RichTextBox的程序。 我寫了這個功能:添加新的線用不同的顏色來RichTextBox的在c#

  System.Windows.Documents.TextRange rangeOfText = 
       new System.Windows.Documents.TextRange(this.Console.Document.ContentEnd, 
        this.Console.Document.ContentEnd) 
       { Text = line + "\n" }; 
      rangeOfText.ApplyPropertyValue(TextElement.ForegroundProperty, color); 

this.Console是我的RichTextBox。

的問題是,我得到很多從CMD線,所以UI被阻塞了很多。 有沒有比這更有效的東西?

+0

爲什麼你認爲RichTextBox的阻塞UI?如果RTB大小是固定的,它如何阻止你的用戶界面,對不起,但我想了解你的問題。 – Jigneshk

+0

爲了調試這個問題,我用一些命令的輸出創建了一個.txt文件,並用於說明這個問題,我從這行文件中逐行讀取了10毫秒的睡眠。在這種情況下,用戶界面卡住了幾分鐘。當我將其更改爲1000毫秒時,我工作正常。如果我使用「appendText」方法(不改變顏色),一切都可以。所以我明白我的函數不能處理每秒很多行。 –

回答

0

如果您正在運行在某種時間太多的命令,那麼你的UI肯定會卡住。您必須創建單獨的線程才能從文件讀取並更新RichTextBox。做這個。 1.創建一個從文件讀取的線程。放置間隔100ms。 2.一旦您收到數據更新RichTextBox。您的新線程無法更新RichTExtBOx,因此您必須使用delegate來更新RTB。像 「richTetxbox1.Invoke