Hallo!
Beim ersten klick auf den Button1 läuft alles normal durch. Nach dem 2 klick wir das doWork 2mal aufgerufen nach dem 3klick 3mal usw….
Wie kann das sein?
private void button1_Click(object sender, EventArgs e)
{
progressBar1.Maximum = 100;
backgroundWorker1.WorkerReportsProgress = true;
backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);
backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
backgroundWorker1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker1_RunWorkerCompleted);
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 0; i < 100; i++)
{
Thread.Sleep(100);
backgroundWorker1.ReportProgress(i); //run in back thread
}
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) //call back method
{
progressBar1.Value = e.ProgressPercentage;
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) //call back method
{
progressBar1.Value = progressBar1.Maximum;
}
HAllo, mit der Zeile:
backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
abonierst du das Event zum Wiederholten mal. Mit += wird eine Callbackmethode einer Liste entsprechend dem EventWe hinzugefügt. Wenn das Event jetzt auslöst wird jede Callbackmethode aufgerufen (Du legst deine Methoden immer wieder auf die Liste)
mfg