c#每秒刷新大数据

时间:2010-01-21 14:06:58

标签: c# listview

我正面临一个问题。

我有一个详细列表的列表视图..

它要显示大量数据。并且数据在每秒后不断更新。

在当前情况列表视图中闪烁。我该如何解决这个问题

4 个答案:

答案 0 :(得分:2)

您可以使用jquery和JSON,而不只是刷新页面以获取新内容吗?

因此,每隔X秒调用一次ashx页面,使用jquery发送请求以获取更多信息。 ashx页面从数据库中获取数据然后返回,您应该将结果值作为json返回,以便jquery可以轻松地解析结果并显示在屏幕上。

使用下面的jquery,c#和web服务来做这类事情的好教程:

Encosia - using jquery to consume aspnet

jquery json documentation

希望对你有所帮助。

编辑:我的回答是假设您使用的是asp.net网络表单。我从来没有使用过win表单(除了我的旧vb 6天)所以不确定你是否可以使用jquery或者不在那里工作。

答案 1 :(得分:1)

在WinForms中,为了防止这种闪烁效应,您需要使用BackgroundWorker对象在单独的线程中运行您的进程。然后,在可接受的时间间隔之后,使用BackgroundWorker的ReportProgress来适当地更新列表。

http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx http://www.dotneat.net/2009/02/10/BackgroundworkerExample.aspx http://dotnetperls.com/backgroundworker

这将允许您定期调用列表的Refresh()方法而不会强制闪烁,因为进程将位于不同的线程中。

答案 2 :(得分:0)

WinForms应用程序中闪烁的一部分可以通过双重缓冲其中的表单和/或控件来解决。另见:Anti Flicker Graphics using Double Buffering

SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.DoubleBuffer, true);

或者,查看Control.DoubleBuffered属性:

答案 3 :(得分:0)

使用ObjectListView项目中的FastObjectListView - 围绕.NET WinForms ListView控件的包装器。快速版本是一个虚拟列表,它使用双缓冲来提供无闪烁的更新。

我将它用于包含超过50,000个对象的列表视图,更新时间少于0.5秒(在中档笔记本电脑上)。

即使几乎是即时更新,您的用户也会很难使用每秒更改其内容的控件。