1

我有一个实时应用程序,它以 ListView 控件的形式不断更新 UI 日志(RichTextBox 控件)。控件使用通过事件接收的当前应用程序数据进行更新。我的应用程序运行得很慢,我发现这是由于 ListView 日志正在更新,这阻塞了 UI 线程。正如您可以想象的那样,该应用程序似乎对用户反应迟钝。

我知道可以在它自己的专用 UI​​ 线程上启动 WPF 窗口。我想知道是否可以在它自己的 UI 线程上托管 WPF 控件,以便主 UI 线程更新窗口的其余部分而不会被阻塞?

如果这是不可能的,请推荐替代方案来解决这个困境。

谢谢!

4

2 回答 2

0

你还没有发布任何代码,但你为什么不绑定ListView到一个ObservableCollection?您更新集合,它会引发一个事件来告诉 UI 它已更改 - 这将更新 UI。

有很多关于如何做到这一点的教程 - 一个可以在Switch On The Code上找到

于 2010-09-27T11:05:20.403 回答
0

RichTextBox 是一个需要定期更新的昂贵控件。

无法在其自己的 UI 线程上托管 WPF 控件。

ObservableCollection 在我的情况下不起作用,因为我无法直接访问我正在绑定的对象 - 第 3 方对象。

我的解决方案需要最少的更改,它是基于 ListView 的 UI Log 控件。ListView 已针对批量和定期更新进行了优化——这要归功于 VirtualisedStackPanel 标签。

于 2010-09-28T10:30:31.387 回答