c#异步操作后台运行(backgroundworker类)示例
c#异步操作后台运行(backgroundworker类)示例
发布时间:2016-12-28 来源:查字典编辑
摘要: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#教程学习
热门C#教程学习
编程开发子分类