http://msdn.microsoft.com/fr-fr/library/system.componentmodel.backgroundworker(v=vs.110).aspx
public BackgroundWorker backgroundWorker1;
private void button1_Click(object sender, EventArgs e) { // Using System.ComponentModel; // la variable contenant le nombre d'opérations à effectuer int operationCount=Convert.ToInt32(textBox1.Text);
progressBar1.Minimum = 0; progressBar1.Step = 1; progressBar1.Value = 0; progressBar1.Maximum =operationCount ;
backgroundWorker1 = new BackgroundWorker() { WorkerReportsProgress = true }; backgroundWorker1.DoWork += new DoWorkEventHandler(this.backgroundWorker1_DoWork); backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(this.backgroundWorker1_ProgressChanged); backgroundWorker1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(this.backgroundWorker1_RunWorkerCompleted);
// on passe la variable en argument backgroundWorker1.RunWorkerAsync(operationCount); }
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) {
for (int i = 0; i <= (int)e.Argument; i++) { Thread.Sleep(500); // pour la démo int n = i * 100 / ((int)e.Argument); backgroundWorker1.ReportProgress(n); } }
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) { label1.Text = string.Format("{0} %",e.ProgressPercentage.ToString()); this.progressBar1.PerformStep();
} private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { MessageBox.Show("Fini !!"); } |