[C# THREADS]problème avec backgroundworker
Bonsoir,
J'ai eu envie de tester après lecture de ce tutoriel : http://glarde.developpez.com/dotnet/bgworker/cs/
J'ai donc créé une micro application (vraiment micro ;) )
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace bgWorkerTest1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 1; i <= 10; i++)
{
if (backgroundWorker1.CancellationPending)
{
e.Cancel = true;
label1.Text = "opération annulée";
}
else
{
backgroundWorker1.ReportProgress(i * 10);
Thread.Sleep(1500);
}
}
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
label1.Text = String.Format("avancement : {0}", e.ProgressPercentage.ToString());
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
button1.Enabled = true;
MessageBox.Show("Fini");
}
private void button1_Click(object sender, EventArgs e)
{
this.button1.Enabled = false;
backgroundWorker1.RunWorkerAsync();
}
private void button2_Click(object sender, EventArgs e)
{
backgroundWorker1.CancelAsync();
}
}
} |
mais j'obtiens l'erreur explicitée dans le tutoriel
http://glarde.developpez.com/dotnet/...ges/bgw005.JPG
J'ai beau chercher , j'ai bien compris que le label appartient à un autre thread mais alors comment afficher mon texte "opération annulée" ?
Merci de votre aide