需要设置BackGroundWork控件的属性中WorkerReportsProgress为True,WorkerSuportsCancel为True(后一个在本程序中没用到)
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;
using System.IO;
namespace BackGroundWorker04
{
public partial class Form1 : Form
{
private int fileCount;
private int fileNow;
private string varToDirectory;
private string varFromDirectory;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{//按钮1
varFromDirectory = @"F:\UPTODATE";//这个文件夹下有500个文件,拷贝序号一分钟左右
varToDirectory = @"F:\UPTODATE2";
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
Directory.CreateDirectory(varToDirectory);
if (!Directory.Exists(varFromDirectory))
{
MessageBox.Show("对不起,您要拷贝的目录不存在。 ");
return;
}
string[] files = Directory.GetFiles(varFromDirectory, "*.pdf",SearchOption.AllDirectories);//取文件夹下所有文件名,放入数组;
fileCount = files.Length;
if (files.Length > 0)
{
foreach (string s in files)
{
File.Copy(s, varToDirectory + s.Substring(s.LastIndexOf("\\")), true);
fileNow = fileNow + 1;
int Report = 100 * fileNow / fileCount;
backgroundWorker1.ReportProgress(Report);
System.Threading.Thread.Sleep(80);
}
}
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
this.progressBar1.Value = e.ProgressPercentage;
this.label1.Text = e.ProgressPercentage + "%";
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
this.button1.Enabled = true;
this.progressBar1.Value = 0;
MessageBox.Show("BackgroundWorker1 任务完成");
}
}
}