利用BackGroundWorker组件实现后台计算后更新UI

本文介绍了如何使用BackGroundWorker组件来避免在多线程中更新UI时出现的错误。通过设置WorkerReportsProgress和WorkerSupportsCancellation属性,以及监听DoWork、ProgressChanged和RunWorkerCompleted事件,实现异步计算并安全地更新用户界面。
摘要由CSDN通过智能技术生成

一开始用的Thread创建线程,由于涉及到更新Ui经常出现停止工作(StopWorking)的报错。

经热心网友提醒,使用了BackGroundWorker组件实现相同的功能(异步更新UI界面)。

MSDN中明确说【您必须非常小心,确保在 DoWork 事件处理程序中不操作任何用户界面对象。 而应该通过 ProgressChanged 和 RunWorkerCompleted 事件与用户界面进行通信。】  

这里的异步处理,就是去干一个长时间的事情(DoWork),然而过程中可以经常抛出事件通知(ProgressChanged),然后完毕了再抛出一个事件通知。就是这么简单的事情。

说了这么多直接上代码:

  BackgroundWorker backgroundWorker1 = new BackgroundWorker();

backgroundWorker1.WorkerReportsProgress = true; // This event will be raised on the worker thread when the worker starts
                backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork); // This event will be raised when we call ReportProgress 
   backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);
                backgroundWorker1.WorkerSupportsCanc

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值