2015.3.11 VS异步控件及进度条结合应用

本文介绍如何使用C#中的BackgroundWorker组件实现异步任务处理与进度更新,包括开始、取消异步任务的方法及如何通过进度条展示任务进度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、在Form中添加 指针控件:BackgroundWorker-bgwork;进度条控件progressBar1 以及开始、取消按钮

2、开始按钮启动异步线程

private void button1_Click(object sender, EventArgs e)

{

   bgwork.WorkerReportsProgress = true; //允许异步控件报告状态

   bgwork.WorkerSupportsCancellation = true;//允许终止

   bgwork.RunWorkerAsync(new string[3] { "1", "2", "3" });//启动异步事件,其中可带任意参数e

}

3、执行异步函数

private void bgwork_DoWork(object sender, DoWorkEventArgs e)

{

    for (int i = 1; i < 101; i++)

    {

        Thread.Sleep(100);

        bgwork.ReportProgress(i); //触发bgwork_ProgressChanged事件,显示百分比i%

        if (bgwork.CancellationPending) //随时监测有无中止此后台进程

        {

            e.Cancel = true;//异步线程主动报告终止线程

            return;

        }

    }

}

private void bgwork_ProgressChanged(object sender, ProgressChangedEventArgs e)

{

    progressBar1.Value = e.ProgressPercentage; //主界面上显示进度条

}

中止后台进程

private void button2_Click(object sender, EventArgs e)

{

    bgwork.CancelAsync();  //主进程要求异步线程终止 此时bgwork.CancellationPending由false变为ture

}

异步进程中止和结构后触发事件

private void bgwork_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)

{

    if (e.Cancelled) MessageBox.Show("取消");//异步线程终止后,主进程判断退出原因,是主动取消还是出错退出。

    else MessageBox.Show(e.r);

}

转载于:https://www.cnblogs.com/mol1995/p/5964856.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值