2010-08-09 167 views
3

使用任何實際數量的文本時,WPF的RTB非常慢。而實際上,我的意思是你期望任何文本編輯器能夠處理的(至少100kb),沒有任何緩慢的跡象。WPF的RichTextBox性能問題

此預期RTB行爲並非如此。實際上,當文本被整齊地分成小字和小段落時,控件的工作方式非常類似,我實現了一些機制,只要他們變得勇敢並輸入任何相當長的內容,就會使我的用戶失靈。我還沒有找到實現上述機制的方法,所以我被迫(或者至少試圖)解決這個問題。

我發現這令人深感不安,因爲它對我沒有任何意義。如果你是一個冒失鬼,並且碰巧鍵入了一串長長的字符而沒有空格或中斷,那麼你就會成爲一個鎖定窗口幾秒鐘的受害者,從而打出一個不受歡迎的耐心測試。我急於想知道的是:爲什麼是這樣?具體而言,爲什麼它會越來越慢地減速只有當文本間隔不一致?我瘋了考慮有人使用我的計劃將有一個破損的空間吧,因此會更傾向於注意到這個令人難以置信的放緩嗎?在連續字符串的情況下,文本選擇也受到嚴重影響。

我針對.NET 4.0,使用VS 2010,並且沒有事件掛在RTB上;出於測試目的,它只是一個RTB(< RichTextBox />)在空白窗口。我能做些什麼來改善其表現?僅僅爲此編寫我自己的控件是否更現實?是否將功能設置爲我的最低要求?如果是這樣,任何資源的鏈接將不勝感激。

值得注意的是,RichTextBox中的數據量可能非常小;我想說清楚的是,文本的格式對性能影響最大。

+3

它不會對人物造成長時間的傷害。 – 2010-08-09 23:35:01

回答

1

對於文本框的新實現,這不是一個不尋常的問題。它與用於計算換行符的算法有關。根據你所報告的行爲類型,這聽起來像他們使用的算法的效率強烈依賴於長度或單詞(即它可能是,例如,O(n^2)相對於單詞長度)。您應該直接向Microsoft報告(具有明確的示例),以便他們可以修復該錯誤。