You have missed to call BackgroundWorker.RunWorkerAsync() method in the Click event handler of the button. Your worker does not get started after initialization.
private void btnCopyToTemp_Click(object sender, EventArgs e)
{
bw_copyToTemp = new System.ComponentModel.BackgroundWorker
{
WorkerReportsProgress = true,
WorkerSupportsCancellation = true
};
bw_copyToTemp.DoWork += bw_copyToTemp_DoWork;
bw_copyToTemp.ProgressChanged += bw_copyToTemp_ProgressChanged;
bw_copyToTemp.RunWorkerCompleted += bw_copyToTemp_RunWorkerCompleted;
// Start background worker
bw_copyToTemp.RunWorkerAsync();
}
Try the following to see that ReportProgress
is called while DoWork
is running:
void bw_copyToTemp_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e)
{
// Set breakpoint here
CurrentState s = (CurrentState)e.UserState;
}
void bw_copyToTemp_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
for (int i = 0; i <= 100; i++)
{
// Set breakpoint here
worker.ReportProgress(i, new CurrentState("Percentage"));
}
}
Debug your application and see how the breakpoints get hit.