2010-09-27 75 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