日期:2014-05-17  浏览次数:21099 次

C# winfrom窗体数据加载 过大一般怎么处理?


我加载了一个Tree  加载方法采用异步写在 Shown 事件里面 但是出现如上图现象。

 MyAsyncDelegate del = new MyAsyncDelegate(MY方法);
   IAsyncResult result = del.BeginInvoke(new AsyncCallback(CallBack), null);  
方法里面采用  this.Invoke(委托);    在这样调用的,貌似还是没什么反应。。求大神给出解决方案。。。

------解决方案--------------------
工作线程(轻型的线程,异步+委托)的作用,是提取数据并转化为UI最终显示的结果,UI是需要显示一下。


换言之:你要确保工作线程不只是提取数据,还有转化工作也一起来做。最后的结果再委托UI线程来操作。

如果即使这样也显示有点卡,那我是否可以理解为你加载的数据用户并不是第一眼全部可以看到。如是:那么为什么不先加载第一屏需要的数据,其它的再进行后期加载。

------解决方案--------------------
分页
显示部分数据,按需要再显示其他。
------解决方案--------------------
同楼上.
可以先显示根节点 展开时再加载下层节点.
------解决方案--------------------
一般这种控件都有一个begin、end之类的方法,把插数据的过程放入begin end之间就能快了,因为不需要每次都绘制,如果已经这么做还慢,就用按需展开的方法,点了加号后再加载子节点内容,楼主你可以搜搜C#加载注册表到Tree