微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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线程。看看这个问题和答案。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。