winform开发时,窗口启动的时候要加载大量的数据,或者界面操作要等待很久的时候,界面会出现假死或者卡住的现象。用异步加载数据可以解决这个问题。

1、异步加载数据:BackgroundWorker的使用:

2、声明一个BackgroundWorker变量:
        DataTable dt = new DataTable();//存放从数据库获取的数据
BackgroundWorker backgroundWorker1 = new BackgroundWorker();

3、在窗口的load事件设置backgroundWorker1 的属性、事件:
backgroundWorker1.DoWork+=new DoWorkEventHandler(backgroundWorker1_DoWork);
backgroundWorker1.RunWorkerCompleted+=new RunWorkerCompletedEventHandler(backgroundWorker1_RunWorkerCompleted);
backgroundWorker1.WorkerSupportsCancellation = true;//声明可以取消

4、启动:backgroundWorker1.RunWorkerAsync(); //可以传递参数,在DoWork事件中用e.Argument接收参数

5、添加DoWork事件加载数据:

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            dt = g_netPointDao.QueryNetPointAll();//从数据库获取数据
        }

6、添加RunWorkerCompleted事件,数据加载完后,操作控件赋值:
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            this.gluNetpoint.Properties.DataSource = dt;//在界面控件绑定数据
            backgroundWorker1.CancelAsync();//取消挂起的后台操作。
        }

7、如果要向用户界面发送信息,则调用BackgroundWorker的ReportProgress方法,它将调用ProgressChanged事件(可以将改变通过object

类型传递);在ProgressChanged事件的响应代码中将改变呈现给用户。

8、滚动条显示的实现:
backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);
backgroundWorker1.WorkerReportsProgress = true;//能否报告进度更新

在DoWork事件中:
BackgroundWorker worker = sender as BackgroundWorker;
worker.ReportProgress( 80);//设置百分比

在ProgressChanged事件中:
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            this.textEdit1.Text = e.ProgressPercentage.ToString()+"%";
        }

C#异步加载数据:BackgroundWorker的使用相关推荐

  1. 学习下ECharts 异步加载数据

    ECharts 通常数据设置在 setOption 中,如果我们需要异步加载数据,可以配合 jQuery等工具,在异步获取数据后通过 setOption 填入数据和配置项就行. ECharts 通常数 ...

  2. ajax实现向上正在加载,向上滚动或者向下滚动分页异步加载数据(Ajax + lazyload)

    /**** desc : 分页异步获取列表数据,页面向上滚动时候加载前面页码,向下滚动时加载后面页码 ajaxdata_url ajax异步的URL 如data.php page_val_name a ...

  3. 新手教程:不写JS,在MIP页中实现异步加载数据

    从需求谈起:在 MIP 页中异步加载数据 MIP(移动网页加速器) 的 加速原理 除了靠谱的 MIP-Cache CDN 加速外,最值得一提的就是组件系统.所有 JS 交互都需要使用 MIP 组件实现 ...

  4. JQuery Datatables 动态配置参数异步加载数据

    背景需求 在前端动态设置datatables需要传递到后端的查询参数,异步加载返回的数据.点击这里进入datatables中文网异步加载数据说明 直接上代码 var table; var url = ...

  5. highcharts.js两种数据绑定方式和异步加载数据的使用

    一,我们先来看看异步加载数据的写法(这是使用MVC的例子) 1>js写法 <script src="~/Scripts/jquery-2.1.4.min.js"> ...

  6. SharePoint 实现ajax异步加载数据的几种方式

    初到公司,由原想的asp.net开发转向了SharePoint(简称SP)开发,个人感觉与之前差别不大,今天用sp实现异步加载数据的时候遇到点问题,之前在asp.net下一步都是用 jquery.aj ...

  7. Ajax 滚动异步加载数据

    第一种情况:单个div滚动 HTML <body> <!-- search start --> <div class="search" #if($m_ ...

  8. 可视化 | Echarts基础异步加载数据交互组件数据集

    目录 1. ECharts 简介 2. ECharts 安装 3. ECharts 配置语法 4. ECharts 图饼 5. ECharts 样式设置 6. ECharts 异步加载数据 7. EC ...

  9. ECharts 异步加载数据及loading 动画

    异步加载 echarts 示例中的数据是在初始化后setOption中直接填入的,但是很多时候可能数据需要异步加载后再填入.ECharts 中实现异步数据的更新非常简单,在图表初始化后不管任何时候只要 ...

  10. 在Vue中异步加载数据渲染到Dom

    在Vue中异步加载数据渲染到Dom 问题 <div v-for="o in resmessage" :key="o" class="text i ...

最新文章

  1. Tomcat的优化技巧
  2. ant system property
  3. CodeForces - 622C Not Equal on a Segment(思维+水题)
  4. 【JavaWeb】JDBC的基本操作和事务控制+登录和转账案例
  5. 浏览器安全检查己通过_Edge浏览器(Chromium)——从XSS到接管网页
  6. Python 爬虫工具 —— fake_useragent
  7. php钩子配置,thinkphp 行为扩展 钩子与插件的实现
  8. mst多生成树优化及规范
  9. 检测到你的手机处于root环境_玩手游多开还在用模拟器?云手机了解一下
  10. adb 连接时候不弹出授权对话框
  11. RocketMQ(十四)RocketMQ消息重试机制
  12. centOS7中使用Nginx部署静态网页
  13. 网吧服务器网络维护教程,高效维护网吧局域网网络的方法
  14. Python爬取Google图片(2021.11.21编写)
  15. huskar与hsf
  16. 花名的新思考:花名的最优用法?
  17. 清华计算机学院考研真题,清华大学计算机考研912真题(回忆版)
  18. angular async和await (实用)
  19. 【渗透技巧】资产探测与信息收集
  20. 计算机网络唤醒技术说明与实现

热门文章

  1. MAC下安装配置Tomcat
  2. JavaScript延时函数
  3. YOLOv5数据集标注工具
  4. STM32——红外遥控
  5. Android修行手册-TextView常用属性篇
  6. android 连接魅族调试,魅族Flyme手机无法连接电脑ADB调试
  7. 三极管饱和状态下增益
  8. js设置css行内样式
  9. MATLAB信号处理——信号与系统的分析基础(4)
  10. 数字图像处理实验一 直方图均衡化与直方图规定化