当后台任务进行时,需要在主程序给个延迟以保证后台在刷新进度显示时有足够时间显示出来
所以要在主进程里走进度,而不是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 Run(Action start, Action completed, Action<int> progress = null, Action cance

当使用BackgroundWorker进行后台任务时,遇到界面进度无法正常显示的问题。为确保后台刷新进度能及时显示,需要在主线程中控制进度更新。通过在doWork中调用报告进度,并在BgWorker_Progress中添加10毫秒延迟,保证线程报告完成,避免阻塞,从而正确显示进度。
最低0.47元/天 解锁文章
2392

被折叠的 条评论
为什么被折叠?



