BackgroundWorker基础

简介: 一、BackgroundWorker是什么?    BackgroundWorker是.net里用来执行多线程任务的控件,它允许编程者在一个单独的线程上执行一些操作。耗时的操作(如下载和数据库事务)在长时间运行时可能会导致用户界面 (UI) 始终处于停止响应状态。

一、BackgroundWorker是什么?


   BackgroundWorker是.net里用来执行多线程任务的控件,它允许编程者在一个单独的线程上执行一些操作。耗时的操作(如下载和数据库事务)在长时间运行时可能会导致用户界面 (UI) 始终处于停止响应状态。如果您需要能进行响应的用户界面,而且面临与这类操作相关的长时间延迟,则可以使用 BackgroundWorker 类方便地解决问题。

 

二、该控件有三个事件:


   DoWork 、ProgressChanged 和 RunWorkerCompleted。


  1. worker.DoWork += new DoWorkEventHandler(worker_DoWork); //执行任务
  2. worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);//任务结束时
  3. worker.ProgressChanged += new ProgressChangedEventHandler(worker_ProgressChanged)

(1)在程序中调用RunWorkerAsync方法则会启动DoWork事件的事件处理:

      当在事件处理过程中,调用 ReportProgress方法则会启动ProgressChanged事件的事件处理。

(2)当DoWork事件处理完成时,则会触发RunWorkerCompleted事件。

您必须非常小心,确保在 DoWork 事件处理程序中不操作任何用户界面对象。而应该通过 ProgressChanged和 RunWorkerCompleted 事件与用户界面进行通信。

 


三、控件常用的几个属性


  先介绍一下backgroundworker的几个属性/方法 



  1. (1)WorkerReportsProgress:是否可以向外报告进度。
  2. (2)WorkerSupportsCancellation :是否可以暂停任务

  3. (3)CancellationPending: 是否正在暂停中
  4. (4)RunWorkerAsync() : 开始执行任务。触发DoWork事件
  5. (5)ReportProgress(int percentPrgress,object userState) :
  6.      向外报告进度。触发ProgressChanged事件.其中,参数可以在ProgressChangedEventArgs

  7. (6)worker_ProgressChanged(object sender, ProgressChangedEventArgs e))中得到; 
  8. (7)CancelAsync() :取消(暂停)执行。




相关文章
|
5月前
|
开发框架 前端开发 JavaScript
在Winform开发中,使用Async-Awati异步任务处理代替BackgroundWorker
在Winform开发中,使用Async-Awati异步任务处理代替BackgroundWorker
C#使用 BackgroundWorker 类实现多线程
C#使用 BackgroundWorker 类实现多线程
C#使用 BackgroundWorker 类实现多线程
|
C# 数据库 UED
C#之BackgroundWorker从简单入门到深入精通的用法总结
C#之BackgroundWorker从简单入门到深入精通的用法总结需求分析 经常用到的耗时操作,例如: 1、文件下载和上载(包括点对点应用程序传输文件,从网络下载文件、图像等)2、数据库事务(从数据库读到大量的数据到WinForm界面中的DataGridview里呈现)3、复杂的本地计算4、本地磁盘文件访问(读写文件,磁盘文件列表)…… 这些操作在长时间运行时会导致用户界面 (UI) 处于停止响应状态,用户在这操作期间无法进行其他的操作,造成非常差的用户体验,为了不使UI层处于停止响应状态,则可以使用 BackgroundWorker 类方便地解决这类问题。
1320 0
|
安全
BackgroundWorker 简单使用教程 多个线程的创建
原文:BackgroundWorker 简单使用教程 多个线程的创建 BackgroundWorker是一个非常不错的线程控件,能避免界面假死,让线程操作你想要做的事,它学习起来很简单,但是能实现很强大的功能。
864 0