backgroundworker problem
-
could someone point out what I am doing wrong that the reportProgress method is not working. BackgroundWorker bw = new BackgroundWorker(); public Control() { bw.WorkerReportsProgress = true; bw.WorkerSupportsCancellation = true; bw.DoWork += new DoWorkEventHandler(bw_DoWork); bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged); bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted); } void bw_ProgressChanged(object sender, ProgressChangedEventArgs e) { //do updates } void bw_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; if ((worker.CancellationPending == true)) { e.Cancel = true; } else { //work code removed totalnumbersoffiles = XmlFiles.Count; for (int filecount = 0; filecount < XmlFiles.Count; filecount++) { //work code removed bw.ReportProgress(filecount); } &
-
could someone point out what I am doing wrong that the reportProgress method is not working. BackgroundWorker bw = new BackgroundWorker(); public Control() { bw.WorkerReportsProgress = true; bw.WorkerSupportsCancellation = true; bw.DoWork += new DoWorkEventHandler(bw_DoWork); bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged); bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted); } void bw_ProgressChanged(object sender, ProgressChangedEventArgs e) { //do updates } void bw_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; if ((worker.CancellationPending == true)) { e.Cancel = true; } else { //work code removed totalnumbersoffiles = XmlFiles.Count; for (int filecount = 0; filecount < XmlFiles.Count; filecount++) { //work code removed bw.ReportProgress(filecount); } &
Not sure what's wrong with your code - this sample code below works though so compare the two.
public class Test
{
private BackgroundWorker backgroundWorker;public Test() { backgroundWorker = new BackgroundWorker(); backgroundWorker.WorkerReportsProgress = true; backgroundWorker.WorkerSupportsCancellation = true; backgroundWorker.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker\_ProgressChanged); backgroundWorker.DoWork += new DoWorkEventHandler(backgroundWorker\_DoWork); backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker\_RunWorkerCompleted); } public void StartTest() { backgroundWorker.RunWorkerAsync(); } private void backgroundWorker\_ProgressChanged(object sender, ProgressChangedEventArgs e) { Console.WriteLine(e.ProgressPercentage); } private void backgroundWorker\_DoWork(object sender, DoWorkEventArgs e) { for (int i = 0; i <= 100; i++) backgroundWorker.ReportProgress(i); } private void backgroundWorker\_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { Console.WriteLine("Done"); }
}
Test t = new Test();
t.StartTest();Dave
BTW, in software, hope and pray is not a viable strategy. (Luc Pattyn)
Visual Basic is not used by normal people so we're not covering it here. (Uncyclopedia)
Why are you using VB6? Do you hate yourself? (Christian Graus) -
could someone point out what I am doing wrong that the reportProgress method is not working. BackgroundWorker bw = new BackgroundWorker(); public Control() { bw.WorkerReportsProgress = true; bw.WorkerSupportsCancellation = true; bw.DoWork += new DoWorkEventHandler(bw_DoWork); bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged); bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted); } void bw_ProgressChanged(object sender, ProgressChangedEventArgs e) { //do updates } void bw_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; if ((worker.CancellationPending == true)) { e.Cancel = true; } else { //work code removed totalnumbersoffiles = XmlFiles.Count; for (int filecount = 0; filecount < XmlFiles.Count; filecount++) { //work code removed bw.ReportProgress(filecount); } &
Planker wrote:
totalnumbersoffiles = XmlFiles.Count; for (int filecount = 0; filecount < XmlFiles.Count; filecount++) { //work code removed bw.ReportProgress(filecount); }
This looks odd to me.
Navaneeth How to use google | Ask smart questions
-
could someone point out what I am doing wrong that the reportProgress method is not working. BackgroundWorker bw = new BackgroundWorker(); public Control() { bw.WorkerReportsProgress = true; bw.WorkerSupportsCancellation = true; bw.DoWork += new DoWorkEventHandler(bw_DoWork); bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged); bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted); } void bw_ProgressChanged(object sender, ProgressChangedEventArgs e) { //do updates } void bw_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; if ((worker.CancellationPending == true)) { e.Cancel = true; } else { //work code removed totalnumbersoffiles = XmlFiles.Count; for (int filecount = 0; filecount < XmlFiles.Count; filecount++) { //work code removed bw.ReportProgress(filecount); } &
instead of bw.ReportProgress(fileCount) write worker.ReportProgress(fileCount+1)
Abdul Rahaman Hamidy Database Developer Kabul, Afghanistan