DataGridView阻止UI线程

时间:2010-09-11 21:56:23

标签: c# winforms multithreading user-interface datagridview

我正在使用DataGridView控件的应用程序。由于存在大量数据,因此我使用VirtualMode来使用分页,但即使使用此功能,也需要一段时间来更新DataGridView。所以我创建了一个旋转和娱乐用户的控件。不幸的是,这个解决方案存在一些问题,即当娱乐控制旋转时,UI线程会处理来自它的任何请求,因为它忙于使用这个DataGridView。

即使它很忙,我该怎么做才能访问UI线程? 如何在使用DataGridView时“娱乐”用户,或者有什么主要阻止UI线程被DataGridView阻止?

顺便说一句。我知道Application.DoEvents可能会有所帮助,但我不想使用它。

2 个答案:

答案 0 :(得分:0)

删除DataGridView线程相对于UI的优先级,或者只是在DGV数据加载函数中抛出偶尔的Thread.Sleep。

结合对页面大小进行一点调整,然后对其进行排序。

答案 1 :(得分:0)

我不确定你的实现是什么样的,所以请原谅我,如果你已经知道这一点:将VirtualMode属性设置为“true”并不会使DataGridView通过即时加载自动填充。相反,它只是让你作为开发人员能够这样做。如果你正在使用虚拟模式,但仍然会立即填充整个事物,那么你真的没有获得任何东西。相反,你必须实现自己的分页算法。这实际上很容易做到。请查看此MSDN topic以获取示例。希望这有帮助!