C#中的BackgroundWorker控件
来源:互联网 发布:最安全的密码算法 编辑:程序博客网 时间:2024/06/05 09:56
Keywords: C# .NET BackgroundWorker
Source: http://txw1958.cnblogs.com/
BackgroundWorker是.NET Framework 里用来执行多线程任务的控件,它允许开发人员在一个单独的线程上执行一些操作。耗时的操作(如下载和数据库事务)在长时间运行时可能会导致用户界面 (UI) 始终处于停止响应状态。如果您需要能进行响应的用户界面,而且面临与这类操作相关的长时间延迟,则可以使用 BackgroundWorker 类方便地解决问题。
若要在后台执行耗时的操作,请创建一个 BackgroundWorker,侦听那些报告操作进度并在操作完成时发出信号的事件。 可以通过编程方式创建 BackgroundWorker,也可以将它从“工具箱”的“组件”选项卡中拖到窗体上。 如果在 Windows 窗体设计器中创建 BackgroundWorker,则它会出现在组件栏中,而且它的属性会显示在“属性”窗口中。
语法
public class BackgroundWorker : Component
构造函数
属性
方法
事件
示例
本代码运行环境:Windows XP, Visual Studio 2010, .NET Framework 4, C#
下面的代码示例演示 BackgroundWorker 类异步执行耗时的基本知识。 下图显示输出的示例。
要尝试该代码,可创建 Windows 窗体应用程序。 添加一个名为 resultLabel 的 Label 控件并添加两个名为 startAsyncButton 和 cancelAsyncButton 的 Button 控件。 创建这两个按钮的 Click 事件处理程序。 从工具箱中的“组件”选项卡中,添加命名为 backgroundWorker1 的 BackgroundWorker 组件。 创建 DoWork、 ProgressChanged 和 BackgroundWorker 的 RunWorkerCompleted 事件处理程序。
在窗体的代码中,用下列代码替换现有代码。
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace WindowsFormsApplication5{ public partial class Form1 : Form { public Form1() { InitializeComponent(); backgroundWorker1.WorkerReportsProgress = true; backgroundWorker1.WorkerSupportsCancellation = true; } private void startAsyncButton_Click(object sender, EventArgs e) { if (backgroundWorker1.IsBusy != true) { // 启动异步操作 backgroundWorker1.RunWorkerAsync(); } this.startAsyncButton.Enabled = false; } private void cancelAsyncButton_Click(object sender, EventArgs e) { if (backgroundWorker1.WorkerSupportsCancellation == true) { // 取消异步操作 backgroundWorker1.CancelAsync(); } this.startAsyncButton.Enabled = true; } //主任务的实现 private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; for (int i = 1; i <= 10; i++) { if (worker.CancellationPending == true) { e.Cancel = true; break; } else { // 执行计时操作并且报告进度 System.Threading.Thread.Sleep(500); worker.ReportProgress(i * 10); } } } //更新进度 private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) { resultLabel.Text = (e.ProgressPercentage.ToString() + "%"); } //处理后台操作结果 private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (e.Cancelled == true) { resultLabel.Text = "Canceled!"; } else if (e.Error != null) { resultLabel.Text = "Error: " + e.Error.Message; } else { resultLabel.Text = "Done!"; } } }}
- C#中的BackgroundWorker控件
- C#中的BackgroundWorker控件
- C#中的BackgroundWorker控件
- c# BackgroundWorker控件使用方法
- C# backgroundworker 控件使用
- c# BackgroundWorker控件使用方法
- c#中BackGroundWorker控件
- c# BackgroundWorker控件使用方法
- c# BackgroundWorker控件使用方法
- C#之--多线程控件BackgroundWorker
- C# BackgroundWorker 异步控件 Demo示例
- C#后台运行控件BackgroundWorker的使用方法
- 【转载于百度空间】C# WinForm中的BackgroundWorker控件的使用方法
- c# BackgroundWorker
- C#学习-BackgroundWorker控件和ProgressBar控件使用
- c#中关于backgroundWorker控件的用法 (转)
- C#中BackgroundWorker中的DoWork执行了多次
- BackGroundWorker控件的使用
- C#中的线程(一)入门
- C#中的线程(二)线程同步
- mysql截取函数LOCATE和POSITION
- C#中的线程(三)多线程
- C#中的线程(四)高级话题
- C#中的BackgroundWorker控件
- C#中的MessageBox消息对话框
- Linux解压 tar命令
- 程序中出现的青色Mark标记怎么去掉
- C#中的WebBrowser控件的使用
- C#中正则表达式使用介绍
- C#中的DataGridView
- window平台下eclipse设置应用程序能够使用的最大内存数的总结
- 使用Python破解验证码