-1
 BackgroundWorker worker = new BackgroundWorker();

        private void btn_Start_Click(object sender, EventArgs e)
        {
            worker.DoWork += new DoWorkEventHandler(worker_DoWork);
            worker.WorkerReportsProgress = true;
            worker.RunWorkerAsync();
        }

        private void worker_DoWork(object sender, DoWorkEventArgs e)
        {                
        using (WebClient webclient = new WebClient())
        {
            using (SPSite site = new SPSite(tb_sourceSite.Text))
            {
                using (SPWeb web = site.OpenWeb())
                {                        
                    webclient.Credentials = new NetworkCredential(tb_NC_Username.Text, tb_NC_Password.Text, tb_NC_Domain.Text);
                    SPList list = web.Lists[tb_sourceList.Text];

                    SPQuery qry = new SPQuery();
                    qry.Query = "<OrderBy><FieldRef Name='ID' /></OrderBy>";
                    qry.RowLimit = Convert.ToUInt32(NumberOfImages.Value);

                    SPListItemCollection items = list.GetItems(qry);

                    int i = 0;
                    progressBar1.Maximum = items.Count;
                    foreach (SPListItem item in items)
                    {
                        string filePathUrl = String.Concat(web.Url, "/", item.Url);

                        webclient.DownloadFile(filePathUrl, tb_DownloadFolder.Text);
                        worker.ReportProgress(i);
                        i++;
                    }
                }
            }
        }
        }

The Startbutton works, i can debug into it. But nothing happens in Backgroundworker. It doesn't download anything oder changes anything.

I am new to Backgroundworker. Am I doing something wrong?

Julian
  • 67
  • 9

1 Answers1

-1

while debugging you might get cross-thread error. Try by creating a delegate to set label text. The below code is just a short example how to use BackgroundWorker with delegate.

 delegate void SetLabel(string msg);

 BackgroundWorker worker = new BackgroundWorker();

    private void btn_Start_Click(object sender, EventArgs e)
    {
        worker.DoWork += new DoWorkEventHandler(worker_DoWork);
        worker.WorkerReportsProgress = true;
        worker.RunWorkerAsync();
    }

    private void worker_DoWork(object sender, DoWorkEventArgs e)
    {
      this.Invoke(new SetLabel(SetLabelMethod), new object[]{     
       "Connecting..."})           
    }

    void SetLabelMethod(string msg)
   { 
     lbl_status.Text = msg;
   }
Aggya
  • 7
  • 1