什麼是運行語法高亮顯示文本框中文本的函數的最佳方式(左側= =紅色,右側=藍色)。我問,因爲我有一個CommandTask線程中的數據檢索,然後在FinishCommand(在UI線程中)突出顯示,這似乎工作,但會突然死鎖用戶界面一點點,而突然離開突出顯示。RichTextBox語法突出顯示主線程的最佳做法嗎?
因此,我嘗試將突出顯示的代碼放入一個specTerative RichTextBox Invoke函數(從而線程安全),並移動線程中的函數調用。這也行得通,但由於某種原因,持續4-8秒慢;這對我來說沒有意義,因爲它具有完全相同的代碼。
最後,我嘗試在線程中創建一個臨時的RichTextBox,將生成的文本粘貼到它並突出顯示。然後,所有Invoke函數都會將RTF傳遞給真正的RichTextBox,但在這種情況下,由於某種原因,RTF不太正確,每次都將顏色移動2次:R = red,B = Blue中,X =黑色字符
行1. RRRRXBBBB(正確)
線路2 XXRRRRBBB(着色移位2向右)
線3. XXXXRRRRX(移位4到右側,等)
所以,我的首要問題是哪種方法是最好的,爲什麼線程化完全相同的代碼較慢,如果方法3是最好的,那麼最奇怪的顏色是什麼移動。謝謝!
那麼,第三種情況呢?線程返回一個RTF字符串,並將其寫入RichTextBox,它不需要Invoke(因爲onFinish發生在UI線程中)。即使在這種情況下,它的速度仍然只有3-6秒左右(我也修正了這個錯誤,但是必須處理這樣一個事實,即/ r/n被認爲是1個字符,但是是2個字節,因此拋棄了rtf字符串,/r/n與/ r/r及其罰款) – Hershizer33
我不知道,你要求我猜我看不到的代碼。因爲RTB必須重新解析RTB,所以當你將一大塊RTF加入時,RTB可能會很慢。 –
好點,一起討論一些相關代碼和Pastebin吧 – Hershizer33