8. BackgroungWorker
8.1.简介
BackgroundWorker是一个在System.ComponentModel命名空间下帮助类,它管理着工作线程。它提供了以下特性:
· 提供程序进度,完成度和退出的标准方案
· 实现了IComponent接口,允许它参与Visual Studio设计器
· 在工作线程之上做异常处理
· 更新WindowsForms控件以应答工作进度或完成度的能力
BackgroundWorker类允许您在单独的线程上执行某个可能导致用户界面(UI)停止响应的耗时操作(比如文件下载数据库事务等),并且想要一个响应式的UI来反应当前耗时操作的进度。可以看的出来,BackgroundWorker组件提供了一种执行异步操作(后台线程)的同时,并且还能妥妥的显示操作进度的解决方案。
8.2. 方法、事件、属性
8.2.1. 方法
RunWorkerAsync()
开始执行一个后台操作。调用该方法后,将触发BackgroundWorker.DoWork事件,并以异步的方式执行DoWork事件中的代码。
该方法还有一个带参数的重载方法:RunWorkerAsync(Object)。该方法允许传递一个Object类型的参数到后台操作中,并且可以通过DoWork事件的DoWorkEventArgs.Argument属性将该参数提取出来。
注:当BackgroundWorker的IsBusy属性为True时,调用该方法将引发InvalidOperationException异常。
ReportProgress(Int percentProgress)
报告操作进度。调用该方法后,将触发BackgroundWorker. ProgressChanged事件。另外,该方法包含了一个int类型的参数percentProgress,用来表示当前异步操作所执行的进度百分比。
该方法还有一个重载方法:ReportProgress(Int percentProgres

本文介绍了C#中的BackgroundWorker组件,用于在后台线程执行耗时操作,保持用户界面的响应性。它支持进度报告、异常处理和异步取消操作。详细阐述了其方法(RunWorkerAsync、ReportProgress、CancelAsync)、事件(DoWork、ProgressChanged、RunWorkerCompleted)以及关键属性(WorkerReportsProgress、WorkerSupportsCancellation、CancellationPending、IsBusy)的使用,并提供了一个应用实例,展示如何结合进度条控件进行操作。
BackgroungWorker&spm=1001.2101.3001.5002&articleId=80290741&d=1&t=3&u=30019749edfd48098b223d5032e3b700)
400

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



