在WINForm开发过程中,我们经常遇到填充比较多的数据到界面时,有时候界面卡死啦,这时候我们最好的办法是采用线程来对数据进行收集,然后再体现在界面上。

1.第一种是比较繁琐的采用异步进行操作。

创建一个委托: private delegate List<string> UpdateUIDelegate(int count);

制定委托方法: UpdateUIDelegate ui = GetData;

        //收集数据的方法

private List<string> GetData(int count)

{
                            List<string> lst = new List<string>();
                            for (int i = 0; i < count; i++)
                           {
                                 lst.Add("item"+i);
                           }
                           return lst;
                        }

异步回调:

private void UpdateCompleted(IAsyncResult asyncResult)
                     {
                            if (asyncResult == null) return;
                            List<string> lstDevice = (asyncResult.AsyncState as UpdateUIDelegate).EndInvoke(asyncResult);
                            //获取UI控件线程进行数据填充
                            this.button1.BeginInvoke(new Action(() => {
                                   this.button1.Text = lstDevice[lstDevice.Count - 1];
                            }));
                      }

开始调用:

UpdateUIDelegate ui = GetData;
                     ui.BeginInvoke(5, UpdateCompleted, ui);

2.另外一个方法就是直接用new Thead() ,但必须设置CheckForIllegalCrossThreadCalls=false;  /*不推荐使用,会有很多问题*/

转自: http://www.cnblogs.com/yisic/articles/3025234.html

转载于:https://www.cnblogs.com/blosaa/archive/2013/05/14/3078335.html

WinForm 界面异步更新数据(方式二)相关推荐

  1. 日常随笔: React useEffect中使用异步更新数据方法遇到的问题

    开发随笔:react hooks 异步更新的问题 1. 问题叙述 在使用antd/G2图表更新的时候发现:在useEffect中通过异步函数对图表渲染的data进行更新, 但是由于第一次更新后,数据是 ...

  2. Flutter ValueNotifier 异步通信、ValueListenableBuilder异步更新数据

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精. Flutter是谷歌推出的最新的移动开发框架. [x1]微信公众号的每日提醒 随时随记 每日积累 随心而过 [x2]各种系列的视频教程 ...

  3. Flutter StreamBuilder 异步更新数据

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精. Flutter是谷歌推出的最新的移动开发框架. [x1]微信公众号的每日提醒 随时随记 每日积累 随心而过 [x2]各种系列的视频教程 ...

  4. Java 异步更新数据

    1. 背景 字典或者模型加载经常会用到双buffer这样读多写少的数据结构.在C++的时候会经常用到brpc里面的双buffer实现.具体可以参考:https://blog.csdn.net/Al_x ...

  5. App如何更新数据(转)

    转载自体验之美 http://tiyanzhimei.com/index.php/app-ru-he-geng-xin-shu-ju/ 大部分以内容为主体的App,都不会把所有数据存储在App中,而是 ...

  6. Android异步处理二:AsynTask介绍和使用AsyncTask异步更新UI界面

    做一下如何同构AsyncTask异步任务来更新UI界面. (1)AsyncTask的介绍 通过上图中的AsyncTask的源码结构图可以看到,主要用于重载的方法是doInBackground(),on ...

  7. wpf在presenter(VM)中异步更新viewer中数据

    在MVP或者MVVM模式中,VM和Presenter通过binding与Viewer交换数据.在实际项目中,往往需要动态刷新界面的数据.本人一般通过刷新与之绑定的属性变化完成.但是,如果遇到数据量较大 ...

  8. 【DBMS 数据库管理系统】数据仓库特征 ( 特征一 : 面向主题组织数据 | 特征二 : 数据集成 | 特征三 : 数据不可更新 | 特征四 : 随时间不断变化 )

    文章目录 一.特征一 : 面向主题 数据组织方式 二.特征二 : 数据集成 三.特征三 : 数据不可更新 四.特征四 : 数据仓库中的数据 随时间不断变化 一.特征一 : 面向主题 数据组织方式 主题 ...

  9. 解析聚合新闻数据,并显示到主界面上(简易新闻 二)

    获取解析聚合新闻数据,并显示到主界面上(简易新闻 二) 关于之前的功能实现可以从制作简易新闻App导航篇中查看 先上一下最终效果图: 关于界面的搭建请看上一篇 使用Fragment+ViewPager ...

最新文章

  1. 普渡大学计算机硕士申请条件,普渡大学计算机与信息技术理学硕士研究生申请要求及申请材料要求清单...
  2. 通过 cygwin64 自己编译对应的 Tera Term cyglaunch.exe
  3. BootStrap-select插件动态添加option无法显示
  4. android 6.0 logcat机制(三)logd处理请求log
  5. ipguard客户端如何卸载_客户端navicat遇到问题怎么办?
  6. 项目管理工具——Maven
  7. 进阶之路:深入解读 Java 堆外内存 | 凌云时刻
  8. atom n270 cpu linux,继续改造ATOM N270增加千兆口自制软路由
  9. 思岚雷达rplidar S1配置调试全纪录
  10. android图片布局填冲满,Android图片裁剪库——cropper使用,完美解决图片填充不满布局问题...
  11. cad直线和圆弧倒角不相切_CAD圆角、倒角分不清?详细讲解CAD圆角与倒角对象的区别和技巧...
  12. c++类的类型转换函数
  13. mpu9250磁力计校准 mpl库数据校准
  14. 洛谷——P6386 [COCI2007-2008#4] VAUVAU(java实现)
  15. Python解析URL参数的方法
  16. 阴天(唐伯虎点秋香版)1铃声 阴天(唐伯虎点秋香版)1手机铃声免...
  17. springboot vue电影购票选座网站源码
  18. 中国十大免费电影网站排行
  19. 微信小程序基础入门(一):小程序界面介绍创造自己的第一个小程序
  20. “珞珈三号01星”首个卫星影像三维模型!——重建大师最新成果

热门文章

  1. ENSP USG6000V登录WEB教程
  2. 【Qt】sqlite数据库使用
  3. 【杂谈】为何有三AI只做原创,从不转载
  4. 中国固废处理行业十四五建议规划与前景深度研究报告2022-2028年
  5. 全球及中国电池行业需求前景与十四五投资规划分析报告2022-2028年版
  6. 外国人工作证延期、办理外国人居留许可延期
  7. chrome添加来自其他网站的扩展程序
  8. 速冻果蔬青麦源品牌-农业大健康·李喜贵:谋定功能性技术
  9. MVC、MVP和MVVC区别
  10. 一个关于Integer的秘密