backgroundworker使用 实现进度条ProgressBar

C#之进度条:用ProgressBar控件实现一边在后台进行算法计算一边在界面显示进度条,需借用BackgroundWorker 近期有个任务需要用到进度条,发现只是单纯设置ProgressBar控件的值的话,并没办法同时实现算法计算和界面进度条显示,这时候需要使用到BackgroundWorker。 下面直接用代码举例说明,如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading; using Syste 阅读详情

 backgroundworker使用 实现进度条ProgressBar


 

///.net Framework 2.0版本以上支持此控件   

///命名空间:   
System.ComponentModel   

///此控件一般是用来实现“多线程”操作,解决了UI界面处于停止响应的状态。   

///此控件可以视图支持,也可以像编程那样来创建它   
BackgroundWorker worker = new BackgroundWorer();   

///注意几个重要的事件处理程序(Event):   

///事件处理程序   

DoWorkEventHandler(object sender , DoWorkerEventArgs e);    
      
///若要收到进度更新通知,请使用   

ProgressChangedEventHandler(object sender , ProgressChangedEventArgs e);   

///若要在操作完成时收到通知,请使用   

RunWorkerCompletedeventHandler(object sender , RunWorkerEventArgs e);   

//加两个方法(Method):   

///开始执行后台操作   
RrunWorkerAsync();    

///请求取消挂起的后台操作   
CancelAsync();    

///// 功能 backgroundworder + progressbar 控件实现进度条功能   

/// button1_Click   
private void button1_Click(object sender, EventArgs e)   
{   
Form2 F2 = new Form2();   
F2.Show();   
       //这里使用的是拖动控件形式来实现。也可以用创建形式来实现   
///添加一个事件处理程序   
this.backgroundworker1.DoWorker += new DoWorkerEventHandler(DoWorker);   
///再添加一个事件处理程序(这里是实现您的功能,我这里是向数据库里添加数据)   
this.backgroudworker1.DoWorker += DoWorkerEventHandler(InsertDataWorker);   
///添加一个显示进度条的事件   
this.backgroundworker.ProgressChanged += new ProgressEventHandler(F2.ProgressChanged); //F2.ProgressChanged 是显示进度条Method   
///后台已操作完成,关闭F2窗体   
this.backgroundworker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(F2.CloseForm); // F2.CloseForm()调用关闭F2窗体   
///开始执行后台操作   
this.backgroundworker.RunWorkerAsyuc();   
         }   
///   
private void DoWorker(object sender , DoWorkEvnetArgs e)   
{   
e.Result = (WorkTimer(this.backgroundworker1,e));   
}   
/////// 这里写您要实现的功能,我这里是向数据库添加数据   
private void InsertDataWork(object sender , DoWorkEventArgs e)   
{   
// do some...   
}   
/// <summary>   
        /// 设置进度条显示长度   
        /// </summary>   
        /// <param name="sender"></param>   
        /// <param name="e"></param>   
        /// PCount 是设置F2窗体里的progressbar控件里的Maximum的值   
        private int WorkTimer(object sender, DoWorkEventArgs e)   
        {   
            for (int i = 0; i < PCount; i++)   
            {   
                if (this.backgroundWorker1.CancellationPending)   
                {   
                    e.Cancel = true;   
                    return -1;   
                }   
                else 
                {   
                    this.backgroundWorker1.ReportProgress(i);   
                }   
                ///   将当前线程挂起指定的时间   
                System.Threading.Thread.Sleep(100);   
            }   
            return -1;   
        }   


////Form2里代码   
public partial class Form2 : Form   
    {   
        public ProgressbarForm()   
        {   
            InitializeComponent();   
        }   
        /// <summary>   
        /// 关闭进度条显示窗体   
        /// </summary>   
        /// <param name="sender"></param>   
        /// <param name="e"></param>   
        public void CloseForm(object sender, RunWorkerCompletedEventArgs e)   
        {   
            this.Close();   
        }   
        /// <summary>   
        /// 显示进度条   
        /// </summary>   
        /// <param name="sender"></param>   
        /// <param name="e"></param>   
        public void ProgessChanged(object sender, ProgressChangedEventArgs e)   
        {   
            this.progressBar1.Style = ProgressBarStyle.Continuous;   
            this.progressBar1.Value = e.ProgressPercentage;   
        }   
    }


 

 

BackgroundWorker实现进度条 用BackGroundWorker实现进度条, private void InitializeBackgroundWorker(),start,end,cancel都有 立即下载

相关推荐

c# backgroundworker+process进度条实例

backgroundworker+process进度条完整解决方案,以测试通过

BackgroudWork的详细用法,实例

介绍backgroudworker控件,主要的三个事件,参数的输入(进入后台)和参数的输出(进入前台)

白话魔法师 2894

BackgroundWorker 4.0 完美实现多线程进度条例子

BackgroundWorker 4.0 完美实现多线程进度条例子

backgroundworker实现进度条显示实…

1. 从工具栏拖一个BackgroundWorker控件,设置其属性WorkerReportsProgress为true 2. 要让worker开始工作,执行如下代码:     mBackgroundWorker.RunWorkerAsync(arg);     这里有重写,如果不需要传递参数直接mBackgroundWorker.RunWorkerAsync(); 3. 编辑DoWork事件

一览众山小 2442

C# winform基于 BackgroundWorker实现异步复制文件显示进度条百分比源代码

C# winform基于 BackgroundWorker实现异步复制文件显示进度条百分比 同时源代码里面还提供了同步复制文件的代码,欢迎加QQ交流2522389877或访问我们的网站 http://www.4u2v.com;

BackgroundWorker初始化进度条

BackgrdWorker技术实现的初始化进度条,直观简单,原理可利用

BackgroundWorker+ProgressBar+委托 实现多线程、进度条

<br />首先,关于BackgroundWorker的用法,请参考http://msdn.microsoft.com/zh-cn/library/system.componentmodel.backgroundworker(VS.80).aspx,讲的很详细哦<br /> <br />下边是我的程序:<br />进度条页面:ProgressForm  中添加ProgressBar控件,FormBorderStyle:None; StartPosition:CenterScreen;<br /> <br /

1511

使用循环神经网络预测温度

简介 本文以天气时间序列数据集为例,讨论如何使用深度学习模型预测未来天气温度。 使用的是由德国耶拿马克思普朗克生物地球化学研究所的气象站记录。 数据每10分钟记录一次,共记录14种不同的量,如气温、气压、湿度、风向等,原始数据可追溯到2003年,本例只使用2009-2016年的数据。 数据 下载并解压数据略。 加载数据: data_dir = r'E:\practice\tf2\temperature' fname = os.path.join(data_dir, 'jena_climate_2009_

guotianqing的博客 5282

STM32待机模式深度解析:RTC唤醒与超低功耗硬件设计

待机模式是嵌入式系统实现亚微安级功耗的核心机制,其本质是通过电源域隔离实现VDD完全断电,仅由VBAT维持RTC和备份寄存器运行。原理上依赖LSE晶振的高精度守时能力与备份域数据持久化,技术价值在于将静态电流压至0.5μA量级,使CR2032电池续航突破三年。典型应用场景包括智能水表、农业传感器、NB-IoT终端等对电池寿命极度敏感的野外设备。实际落地需协同处理RTC校准、WKUP引脚可靠性、GPIO漏电抑制及PCB低功耗布局——这些正是STM32待机模式与RTC唤醒不可绕过的工程硬约束。

weixin_34014555的博客 284

RagFlow实战:如何用DeepDoc引擎高效处理扫描PDF文档(附完整代码解析)

本文详细解析了如何利用RagFlow的DeepDoc引擎高效处理扫描PDF文档。通过实战演示从环境搭建、PDF预处理、文本检测与识别,到布局分析与表格结构提取的完整流程,并提供了完整的代码实现。该方案超越了传统OCR,能输出保留原始版面信息的结构化数据,为构建高质量知识库提供了强大支持。

weixin_29245767的博客 300

从原理图到PCB:Cadence Allegro 17.4网表同步全流程详解(含第三方网表配置)

本文详细解析了Cadence Allegro 17.4中从Orcad原理图到PCB布局的网表同步全流程。核心内容包括标准的第一方网表同步步骤,以及针对第三方网表导入时关键的封装库路径配置方法,并提供了常见同步错误的排查思路,帮助工程师高效、准确地完成设计数据传递,确保PCB设计顺利开局。

salt9的博客 655

使用BackgroundWorker与ProgressBar控件实现一个进度条

    1.首先添加两个三个控件   2. 设置backgroundWorker1的属性WorkerReportsProgress属性为True3.BackgroundWorker控件允许在一个独立的专属的进程上面执行一些操作。尤其是一些消耗时间资源比较大的事件。private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs...

weixin_39730950的博客 1388

用Python实现古诗词填字游戏(三)

古诗词做填字游戏的第三部分代码,也是最核心的部分。实现对诗文和关键字的选定,并确定文字的输出位置。

PosPro的专栏 6117

java线程池实现进度条_BackgroundWorker+ProgressBar+委托 实现多线程、进度条

 当C#编译器处理委托类型时,它先自动产生一个派生自System.MulticasrDelegate的密封类,该类定义了三个公共方法:Invoke(),BeginInvoke()和EndInvoke()。Invoke()用来以同步方式调用委托对象维护的方法,而BeginInvoke()和EndInvoke()方法能在第二个执上文在《C# 使用BackgroundWorker实现WinFor...

weixin_31089065的博客 428

YOLOv11 模型改进:利用新型损失函数实现精度跃升(含代码全解析)

在目标检测领域,损失函数的选择直接决定模型的精度上限。某自动驾驶公司将 YOLOv11 原有损失替换为新型损失后,障碍物检测 mAP 提升 10%,夜间场景误检率降低 22%;某物流分拣项目中,采用新损失的 YOLOv11 模型对小包裹的识别准确率从 82% 升至 96%。如果你也在为模型精度瓶颈、样本不平衡问题困扰,这篇教程将带你掌握 YOLOv11 损失函数的进阶技巧,真正帮你在检测性能上实现突破。损失函数是模型训练的“指南针”,它定义了模型“学习的方向”。传统损失(如 BCE、Focal Loss)在

m0_71589036的博客 714

HAL STM32+EC11编码器实现增减调节及单击、双击、长按功能

HAL STM32+EC11编码器实现增减调节及单击、双击、长按功能

perseverance51博客 4236

BackgroundWorker+ProgressBar+委托 实现多线程、进度条

上文在《C# 使用BackgroundWorker实现WinForm异步》介绍了如何通过BackgroundWorker实现winForm异步通信,下面介绍如何通过BackgroundWorker实现进度条显示。实现效果图如下所示: 要实现此功能,首先需要创建一个带有进度条的窗体,取名为:frmProcess,窗体中添加processBar和一个Label进行,设...

weixin_30528371的博客 258

Autosar模式管理入门系列02-EcuM

对EcuM状态机切换过程及模块中重要API进行介绍。

initiallizer的博客 7093
上一篇: 获取点击控件Name,并更改Text值
下一篇: C#指定窗口显示位置
CLeopard
博客等级 码龄15年 180粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值