C#进度条(Backgroudworker)
C#进度条(Backgroudworker)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace 进度条2
{
public partial class Form1 : Form
{
private BackgroundWorker worker = new BackgroundWorker();
int N = 0;
public Form1()
{
InitializeComponent();
worker.WorkerReportsProgress = true;
worker.WorkerSupportsCancellation = true;
worker.DoWork += new DoWorkEventHandler(DoWork);
worker.ProgressChanged += new ProgressChangedEventHandler(ProgessChanged);
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(CompleteWork);
}
public void DoWork(object sender, DoWorkEventArgs e)
{
e.Result = ComputeFibonacci(worker, e);
}
public void ProgessChanged(object sender, ProgressChangedEventArgs e)
{
progressBarX1.Value = e.ProgressPercentage;
int V =(int)( e.ProgressPercentage / N);
progressBarX1.Text = Convert.ToString(V) + "%";
}
public void CompleteWork(object sender, RunWorkerCompletedEventArgs e)
{
progressBarX1.Text = "处理完毕!";
}
private int ComputeFibonacci(object sender, DoWorkEventArgs e)
{
for (int i = 0; i <= 92800; i++)
{
if (worker.CancellationPending)
{
e.Cancel = true;
return -1;
}
else
{
worker.ReportProgress(i); //引发ProgessChanged事件
}
}
return -1;
}
private void btnStart_Click(object sender, EventArgs e)
{
N = 92800 / 100;
progressBarX1.Maximum = 92800;
worker.RunWorkerAsync(); //开始执行后台操作
}
private void btnPause_Click(object sender, EventArgs e)
{
worker.CancelAsync(); //请求暂停后台操作
}
}
}
posted on 2009-05-31 09:29 kisstome88 阅读(1696) 评论(0) 编辑 收藏 举报