2010-09-27 73 views
1

我有一個實時應用程序,它不斷地以ListView控件的形式更新UI日誌(RichTextBox控件)。該控件通過事件接收的當前應用程序數據進行更新。我的應用程序運行速度非常慢,我發現這是由於ListView日誌正在更新,這會阻塞UI線程。正如您可以想象的那樣,該應用程序對用戶顯得非常反應。.NET更新自己的專用UI線程上的WPF控件

我知道有可能在它自己的專用UI線程上啓動一個WPF窗口。我想知道是否有可能在其自己的UI線程上託管一個WPF控件,以便主UI線程更新窗口的其餘部分而不被阻塞?

如果這是不可能的,請推薦替代方案來解決這個難題。

謝謝!

回答

0

RichTextBox的發現是一個昂貴的控制定期更新。

無法在自己的UI線程上託管WPF控件。

ObservableCollection在我的情況下不起作用,因爲我沒有直接訪問我綁定的對象 - 第三方對象。

我的解決方案只需要很少的修改就將UI Log控件放在ListView上。 ListView已針對批量和定期更新進行了優化 - 感謝VirtualisedStackPanel標籤。

0

您尚未發佈任何代碼,但爲什麼不將ListView綁定到ObservableCollection?您更新了集合,並且引發了一個事件來告訴用戶界面它已更改 - 這將更新用戶界面。

有一個關於如何做到這一點很多教程 - 這樣一個可以在Switch On The Code