手机
当前位置:查字典教程网 >编程开发 >C#教程 >c#异步操作后台运行(backgroundworker类)示例
c#异步操作后台运行(backgroundworker类)示例
摘要:c#异步操作,BackgroundWorker类的使用,可以在后台运行需要的代码逻辑。复制代码代码如下:usingSystem;usingS...

c#异步操作,BackgroundWorker类的使用,可以在后台运行需要的代码逻辑。

复制代码 代码如下:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading;

using System.Windows.Forms;

namespace TestBackgroundWork

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

InitializeBackgoundWorker();

}

private BackgroundWorker backgroundWorker1;

private void InitializeBackgoundWorker()

{

this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker();

this.backgroundWorker1.WorkerReportsProgress = true;

this.backgroundWorker1.WorkerSupportsCancellation = true;

this.backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);

this.backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);

this.backgroundWorker1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker1_RunWorkerCompleted);

}

//**********backgroundWorker1的回调函数**********

void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)

{

BackgroundWorker worker = sender as BackgroundWorker;

for (int i = 1; i <= 10; i++)

{

if (worker.CancellationPending)

{

e.Cancel = true;

}

else

{

Thread.Sleep(500);

int percentComplete = (int)((float)i / (float)10 * 100);

worker.ReportProgress(percentComplete);

}

}

}

void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)

{

this.progressBar1.Value = e.ProgressPercentage;

}

void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)

{

if (e.Error != null)

{

MessageBox.Show(e.Error.Message);

}

else if (e.Cancelled)

{

resultLabel.Text = "Canceled";

}

else

{

resultLabel.Text = "Completed";

}

startBtn.Enabled = true;

stopBtn.Enabled = false;

}

//**********backgroundWorker1的回调函数**********

private void startBtn_Click(object sender, EventArgs e)

{

resultLabel.Text = String.Empty;

this.startBtn.Enabled = false;

this.stopBtn.Enabled = true;

//启动异步操作.

backgroundWorker1.RunWorkerAsync();

}

private void stopBtn_Click(object sender, EventArgs e)

{

backgroundWorker1.CancelAsync();

}

}

}

【c#异步操作后台运行(backgroundworker类)示例】相关文章:

c# 对windows用户和组操作实例

C#文件后缀名的详细介绍

c#对字符串操作的技巧小结

C# BackgroundWorker组件学习入门介绍

C#操作txt文件,进行清空添加操作的小例子

C# 对XML操作入门实例

C# double和decimal数据类型以截断的方式保留指定的小数位数

c#剪切板操作的简单实例

c#(Socket)异步套接字代码示例

C#词法分析器之输入缓冲和代码定位的应用分析

精品推荐
分类导航