关于BackgroundWorker进度报告时界面进度不能正常显示的问题

当使用BackgroundWorker进行后台任务时,遇到界面进度无法正常显示的问题。为确保后台刷新进度能及时显示,需要在主线程中控制进度更新。通过在doWork中调用报告进度,并在BgWorker_Progress中添加10毫秒延迟,保证线程报告完成,避免阻塞,从而正确显示进度。
摘要由CSDN通过智能技术生成

当后台任务进行时,需要在主程序给个延迟以保证后台在刷新进度显示时有足够时间显示出来

所以要在主进程里走进度,而不是BackgroundWorker的通知

举例如下:

1. 声明一个后台任务

readonly BackgroundWorker bgWorker;

2. 设置任务


/* ---------- 设置线程任务 ---------- */
bgWorker = new BackgroundWorker
{
	// 开启进度报告
	WorkerReportsProgress = true,
	// 开启异步取消
	WorkerSupportsCancellation = true
};
bgWorker.DoWork += BgWorker_Start;
bgWorker.ProgressChanged += BgWorker_Progress;
bgWorker.RunWorkerCompleted += BgWorker_Completed;

3. 实现线程任务和线程方法

#region 线程方法

/// <summary>
/// 启动线程
/// </summary>
/// <param name="start"></param>
/// <param name="completed"></param>
/// <param name="progress"></param>
/// <param name="cancel"></param>
public void
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值