c#异步操作后台运行(backgroundworker类)示例
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#在后台运行操作:BackgroundWorker的用法
- C#在后台运行操作:BackgroundWorker的用法
- C#在后台运行操作:BackgroundWorker的用法
- C# 下面的代码示例演示如何结束异步操作以获取请求的流,然后开始一个请求以获取响应。....
- C#在后台运行操作:BackgroundWorker的用法
- C# MVC webuploader同步上传前后台详解教程(提供同步、异步上传源码下载链接地址)
- linux学习入门1——bash命令基本操作(linuxcast.net)(bash部分快捷键、uname、history、通配符、切换用户、作业管理(前台、后台运行,暂停等操作))
- [C#] 走进异步编程的世界 - 在 GUI 中执行异步操作
- 前端通过AJAX提交数据,后台PHP处理数据实现异步操作基本流程
- ASP.NET C# DataTable与Excel互操作示例
- C# BackgroundWorker实现WinForm异步操作的例子
- 在AWS EMR上运行Map Reduce的Java示例程序 及 操作小计
- C#操作INI配置文件示例
- C# 笔记 异步操作:回调函数__AsyncCallback 委托
- C# 委托的三种调用示例(同步调用 异步调用 异步回调)
- 解决c#所有单线程单元(STA)线程都应使用泵式等待基元(如 CoWaitForMultipleHandles),并在运行时间很长的操作过程中定期发送消息。 转载
- C# BackgroundWorker实现WinForm异步操作的例子
- 《CLR via C#》读书笔记 之 计算限制的异步操作
- c#异步task示例分享(异步操作)