首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏跟着阿笨一起玩NET

    backgroundworker组件的使用

    开始 在应用程序中添加一个BackgroundWorker实例,如果用的是VS,可以从工具上直接拖到应用程序: BackgroundWorker backgroundWorker1 = new BackgroundWorker (); 为了开始在后台操作,必须调用BackgroundWorker的RunWorkerAsync()方法,当调用此方时,BackgroundWorker 通过触发DoWork 事件,开始执行后台操作 代码如下: 代码一: BackgroundWorker backgroundWorker1 = new BackgroundWorker(); //在另一个线程里开始操作(btnStart是一个按钮控件 代码二: BackgroundWorker backgroundWorker1 = new BackgroundWorker(); backgroundWorker1.WorkerReportsProgress 代码三: BackgroundWorker backgroundWorker1 = new BackgroundWorker();  backgroundWorker1.WorkerReportsProgress

    1.3K20发布于 2018-09-19
  • 来自专栏CSharp编程大全

    C# BackgroundWorker用法详解

    还好 .NET 类库中提供了一个叫做 BackgroundWorker 的类可以比较优雅的解决这类问题。 虽然BackgroundWorker 类使用起来比较简单,但其中还是有一些需要注意的细节,下面我们就通过 demo 程序介绍它的主要用法。 private BackgroundWorker _demoBGWorker = new BackgroundWorker(); _demoBGWorker.DoWork += BGWorker_DoWork 当然,BackgroundWorker对这个用例也提供了很好的支持。 bgWorker = sender as BackgroundWorker; int endNumber = 0; if(e.Argument !

    1.7K10发布于 2021-01-13
  • 来自专栏技术之路

    C#中backgroundworker的使用

    通过一个demo来说一下backgroundworker的使用 上图使我们最终需要实现的效果,下来我们开始编码 声明backgroundworker并绑定事件 在注释中已经写出属性的含义和绑定事件的含义 BackgroundWorker backgroundWorker1; backgroundWorker1 = new System.ComponentModel.BackgroundWorker(); backgroundWorker1.WorkerReportsProgress = true;//能否报告进度更新 backgroundWorker1.WorkerSupportsCancellation (this.backgroundWorker1_RunWorkerCompleted); DoWork 后台要执行的任务 private void backgroundWorker1_DoWork(object .CancelAsync(); } backgroundWorker1.RunWorkerAsync(50); 开始执行任务,参数50可以在backgroundWorker1_DoWork

    1.6K10编辑于 2024-04-23
  • 来自专栏软件开发

    BackgroundWorker在单独的线程上执行操作

    直接使用多线程有时候会带来莫名其妙的错误,不定时的发生,有时候会让程序直接崩溃,其实BackgroundWorker 类允许您在单独的专用线程上运行操作。 可以通过编程方式创建 BackgroundWorker,也可以将它从“工具箱”的“组件”选项卡中拖到窗体上。 BackgroundWorker 事件不跨 AppDomain 边界进行封送处理。请不要使用 BackgroundWorker 组件在多个 AppDomain 中执行多线程操作。 下面使用BackgroundWorker 完成斐波那契数列的后台运算操作,斐波那契数列:1,1,2,3,5,8...n=(n-1)+(n-2) BackgroundWorker bw;          如果您需要能进行响应的用户界面,而且面临与这类操作相关的长时间延迟,则可以使用 BackgroundWorker 类方便地解决问题。 注:文章参考了MSDN许多

    2.2K10编辑于 2022-05-09
  • 来自专栏AhDung

    【C#】带等待窗体的BackgroundWorker

    ---------------201504170911更新--------------- 更新内容:删除bgwUI新增的Start方法,改为通过new修饰符+可选参数的方式同时覆盖基类(BackgroundWorker 而这一篇分享的是一个叫做BackgroundWorkerUI的东东(下文简称bgwUI),看名字就知道它是基于BackgroundWorker(下文可能简称bgw)组件实现的,所以如果你更习惯bgw的使用方式 + e.Result); } } 与BackgroundWorker的用法区别: 这里只讲区别,没讲到的表示与bgw一致,不熟悉bgw用法的猿友请MSDN。 System.ComponentModel; using System.Windows.Forms; namespace AhDung.WinForm { ///

    /// 带等待窗体的BackgroundWorker 报告进度用一组UI操作方法 /// public class BackgroundWorkerUI : BackgroundWorker {

    2.2K30发布于 2018-09-13
  • 来自专栏hbbliyong

    C#基础知识回顾--BackgroundWorker介绍

    三个事件 DoWork 事件 void backgroundWorker1_DoWork( Object sender, DoWorkEventArgs e ) 其中句柄sender指向的就是该BackgroundWorker backgroundWorker; private void button1_Click(object sender, EventArgs e) { backgroundWorker = new BackgroundWorker (); backgroundWorker.WorkerReportsProgress = true; backgroundWorker.DoWork += new DoWorkEventHandler( backgroundWorker_DoWork); backgroundWorker.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker_ProgressChanged ); backgroundWorker.RunWorkerAsync(); } void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs

    1.4K50发布于 2018-03-05
  • 来自专栏大内老A

    如果在BackgroundWorker运行过程中关闭窗体…

    在Windows Form应用中,BackgroundWorker 类允许您在单独的专用线程上运行操作。 如果您需要能进行响应的用户界面,而且面临与这类操作相关的长时间延迟,则可以使用 BackgroundWorker 类方便地解决问题。 方法backgroundWorker_RunWorkerCompleted是BackgroundWorker的RunWorkerCompleted事件处理方法,在这里我们通过MessageBox来显示当前窗体的 注册到该BackgroundWorker的异步操作通过点击某个按钮开启。相关的代码如下所示。 -= backgroundWorker_RunWorkerCompleted; 9: }

    1.6K110发布于 2018-02-07
  • 来自专栏哆哆Excel

    在VB.net中WinForm+Backgroundworker+StatusStrip范例

    Public Class Form_backgroundworker Dim ShowFlag As Boolean = True Dim actCell As Excel.Range CenterToScreen() BackgroundWorker1.WorkerReportsProgress = True BackgroundWorker1.WorkerSupportsCancellation Me.Closed If BackgroundWorker1.IsBusy Then ShowFlag = False BackgroundWorker1 e As ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork Dim worker As BackgroundWorker = CType(sender, BackgroundWorker) For j As Integer = 1 To 100 If BackgroundWorker1

    53310编辑于 2024-04-11
  • 来自专栏大内老A

    一个通过BackgroundWorker实现WinForm异步操作的例子

    二、代码实现 由于界面上左右两边是两个互不干扰、相互独立的操作,所以分别创建了两个BackgroundWorker组件来负责(如下图:backgroundWorkerLeft和backgroundWorkerRight 将两个BackgroundWorker的WorkerReportsProgress和WorkerSupportsCancellation设为true。 注意该方法的两个参数:BackgroundWorker和DoWorkEventArgs 对象,返回值是返回数据的数量。 之所以要将这两个参数传入RetrieveData()方法,是因为该方法是为两个BackgroundWorker服务的,需要通过参数来区别当前是哪个BackgroundWorker。 我们再来看看RetrieveData方法的定义: 1: private int RetrieveData(BackgroundWorker worker, DoWorkEventArgs e)

    95810编辑于 2022-05-09
  • 来自专栏历史专栏

    【愚公系列】2023年12月 Winform控件专题 BackgroundWorker控件详解

    一、BackgroundWorker控件详解 BackgroundWorker控件是Windows Forms中提供的一个轻量级组件,用于在后台线程中执行耗时的操作,避免阻塞UI线程,提高应用程序的响应性能 下面是一个简单的示例,演示如何在Winform中使用BackgroundWorker控件和WorkerSupportsCancellation属性: private BackgroundWorker backgroundWorker1 2.常用场景 BackgroundWorker控件在Winform应用程序中的常用场景有: 长时间运行的任务:当需要执行耗时的操作时,比如读取大量数据、计算复杂算法、网络请求等,BackgroundWorker / 创建 BackgroundWorker 对象 bgWorker = new BackgroundWorker(); // 设置 WorkerReportsProgress ; // 创建 BackgroundWorker 对象 bgWorker = new BackgroundWorker();

    1.4K11编辑于 2023-12-28
  • 来自专栏独立观察员博客

    浅谈.Net异步编程的前世今生----EAP篇

    backgroundWorker1.IsBusy) //判断是否正在执行异步操作 { //backgroundWorker开始执行异步操作 在EAP模型中,执行RunWorkerAsync方法后,会触发backgroundWorker1_DoWork事件。 那么BackgroundWorker内部是不是依然使用了线程池及后台线程呢? backgroundWorker1_RunWorkerCompleted判断是否已经取消,最后对UI进行提示输出,取消操作完成。 尤其是BackgroundWorker组件,定义相应的事件后,在不同阶段根据需求编写方法即可实现异步操作、报告进度及取消等。

    80520编辑于 2022-12-06
  • 来自专栏Niuery的技术日记

    并发编程 ---为何要线程池化

    微软除实现了线程池外,还需要关注一个类型:BackgroundWorkerBackgroundWorker 的简单示例如下: private BackgroundWorker backgroundWorker = new BackgroundWorker(); private += BackgroundWorker_DoWork; //注册报告进度 backgroundWorker.ProgressChanged += BackgroundWorker_ProgressChanged ; //注册完成时的回调 backgroundWorker.RunWorkerCompleted += BackgroundWorker_RunWorkerCompleted; e) { //取消任务 if (backgroundWorker.IsBusy) backgroundWorker.CancelAsync(); } private void

    49640编辑于 2023-10-22
  • 来自专栏静谧的小码农

    C#中连接数据库15秒检测程序假死避免问题

    C#,VS中有一个控件叫做BackgroundWorker,他的意思是在单独的线程上执行操作。 ? 用法: private BackgroundWorker bgWorker = new BackgroundWorker(); bgWorker.WorkerReportsProgress = true 调用该方法后,将触发BackgroundWorker. ProgressChanged事件。 当调用BackgroundWorker.RunWorkerAsync()时触发。 "; if (backgroundWorker1.IsBusy !

    1.8K20发布于 2019-01-11
  • 来自专栏c#Winform自定义控件系列

    c# Winform 加载窗体

    先来一个加载窗体代码 1 public partial class FrmLoading : Form 2 { 3 public BackgroundWorker updateDBWorker =new BackgroundWorker(); 4 5 public Action BackgroundWorkAction 6 { 7 DoWork); 25 this.updateDBWorker.ProgressChanged += new ProgressChangedEventHandler(this.backgroundWorker1 ); 26 this.updateDBWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(this.backgroundWorker1 "" : e.UserState.ToString(), e.ProgressPercentage); 72 } 73 74 private void backgroundWorker1

    1.8K20发布于 2019-09-10
  • 来自专栏CSharp编程大全

    C# 生产者与消费者模式

    writer; public lockClass() { writer = new StreamWriter(f); var backgroundWorker = new BackgroundWorker(); backgroundWorker.DoWork += backgroundWorker_DoWork; backgroundWorker.RunWorkerAsync(); } void backgroundWorker_DoWork(object sender, DoWorkEventArgs = new BackgroundWorker(); backgroundWorker.DoWork += reader_backgroundWorker_DoWork; backgroundWorker.RunWorkerAsync(); } void reader_backgroundWorker_DoWork(object sender

    1.6K10发布于 2021-01-13
  • 来自专栏天堂向左程序员向右

    从零开始搭建一个GIS开发小框架(九)——WPF进度条效果

    其实从第三层到第五层原本是放在一个字段里的string型POI类型描述,将它拆解成三层树结构时损耗了部分性能,到最下面一层(图标是感叹号)类型,大概有5700多个叶子节点,加载这个资源目录树需要一段时间,这里用委托实现页面传值+BackgroundWorker 弹框代码示例 // 文本框赋值方法 的委托属性 private LoadDataEventHandler _loadDataSubWindowDel; BackgroundWorker worker = typeString, string adname, LoadDataEventHandler del) { InitializeComponent(); worker = new BackgroundWorker _loadDataSubWindowDel = del; } #region BackgroundWorker 多线程 ///

    /// 第一次打开Form /// </summary #region load数据 /// /// 组装树的数据集 /// private FormMainProgressBarResult LoadData(BackgroundWorker

    82630编辑于 2022-12-01
  • 来自专栏喵叔's 专栏

    6搞懂线程池(二)

    抱歉各位多线程专栏托更这么久,这篇文章我们继续讲线程池的相关知识,其中将涉及到如下知识: 取消异步操作 等待事件处理器及超时 计时器 BackgroundWorker 零、取消异步操作 这一小节将引入两个类 三、BackgroundWorker 在这一小节我们将不使用线程池和委托而是使用了事件。事件表示了一些通知的源或当通知到达时会有所响应的一系列订阅者。下面我们先来看一下例子。 bw = (BackgroundWorker)sender; for (int i = 1; i <= 100; i++) { BackgroundWorker 主要用于 WPF 中,通过后台工作事件处理器代码可以直接与 UI 控制器交互。 与直接在线程池中与 UI 控制器交互的方式相比较,使用 BackgroundWorker 更好。

    81110发布于 2020-09-08
  • 来自专栏听雨堂

    异步方式访问网页

    采用BackgroundWorker,在后台执行程序,往往比开新线程更简单和更加安全。 简单的使用方法 System.ComponentModel.BackgroundWorker bw = new System.ComponentModel.BackgroundWorker(); //定义需要在子线程中干的事情 <param name="url">网页地址</param> /// <returns></returns> public static void Notify(string url) {     BackgroundWorker bw = new BackgroundWorker();  //定义一个背景对象     //定义需要在子线程中干的事情     bw.DoWork += new System.ComponentModel.DoWorkEventHandler

    2.4K90发布于 2018-01-23
  • 来自专栏跟着阿笨一起玩NET

    C# BackgroudWorker

    .Net2.0的System.ComponentModel.BackgroundWorker为我们提供了一个很方便的解决方法. BackgroundWorker内部实现是基于delegate的异步调用. backgroundWorkerDemo.zip

    43810发布于 2018-09-18
  • 来自专栏c#Winform自定义控件系列

    (七十三)c#Winform自定义控件-资源加载窗体

    ///

    36 /// The update database worker 37 /// 38 BackgroundWorker updateDBWorker = new BackgroundWorker(); 39 /// 40 /// 获取或设置加载任务 41 DoWork); 68 this.updateDBWorker.ProgressChanged += new ProgressChangedEventHandler(this.backgroundWorker1 </param> 114 private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) 115 </param> 139 private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs

    1K20发布于 2019-09-29
领券