GUI在大量更新过程中更新具有80列的网格时无响应。

| 我正在申请证券交易所的证券交易。它具有来自供应商之一的实时市场信息。我们正在处理工作线程上的市场数据,并在更新主GUI时将这些数据编组到GUI线程。 让我更清楚地说,有一个具有80列的超网格(第三方gridview),我们大约有40行具有相同的安全性,当市场数据波动时,必须对其进行更新。我们能够处理10条消息/秒/安全性的市场频率。但除此之外,我们无法应付。当频率增加到25-30 msgs / sec /安全性时,GUI变得无响应。我们在设计和实施时遵循了最佳实践,但是仍然无法处理高频率。我们正在工作线程/背景线程上执行所有非GUI特定的工作,但仍面临GUI挂起的问题。请帮助我建议任何现成的解决方案来解决此问题。由于安全原因,在这里我无法放置代码片段。     
已邀请:
        将您的网格组件切换到可以使缓冲区和多线程加倍的东西(我希望大多数数据在更新时将保持静态),或者自行滚动。滚动自己的声音是不可避免的:这种繁重的更新活动并不是网格控件最常见的用例。我会开始寻找带有您可以修改的开源代码的网格控件,例如http://www.codeproject.com或http://www.codeplex.com。选择什么取决于您的其他要求,a。     
        这里的关键是虚拟化所有内容-数据模型与网格之间的唯一交互应该是在需要绘制相关单元时。为此,您将需要使用支持这种虚拟化的网格(我之前使用Syncfusion网格来进行此操作,请参见此处的示例)。 您还需要将更新批处理到您的数据模型中,以便您不会过于频繁地阻塞GUI线程。看看这个问题和答案。     

要回复问题请先登录注册