Pausa / Reanudar bucle en el trabajador de fondo

Tengo un bucle en el trabajador de fondo en una aplicación Winform.

Acabo de usar este Código pero no se reanudará después de la pausa.

En la clase principal utilizo este

System.Threading.ManualResetEvent _busy = new System.Threading.ManualResetEvent(false);

Luego, en My Start Click escribí esto:

  if (!backgroundWorker1.IsBusy) { MessageBox.Show("Not Busy"); //Just For Debugg _busy.Set(); Start_Back.Text = "Pause"; backgroundWorker1.RunWorkerAsync(tempCicle); } else { _busy.Reset(); Start_Back.Text = "Resume"; } btnStop.Enabled = true; 

Entonces, en backgroundworker DoWork escribí esto:

 private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { m_addTab addTabsInvoke = addTabUrl2; Invoke(addTabsInvoke, "http://www.google.com"); foreach (something) { _busy.WaitOne(); if (backgroundWorker1.CancellationPending) { return; } if (tabs.InvokeRequired) { ...... ...... 

No entiendo por qué funciona la pausa mientras que el currículum no funciona. ¿Me equivoque algo?

Mi mejor conjetura para lo que quieres:

 void ResumeWorker() { // Start the worker if it isn't running if (!backgroundWorker1.IsBusy) backgroundWorker1.RunWorkerAsync(tempCicle); // Unblock the worker _busy.Set(); } void PauseWorker() { // Block the worker _busy.Reset(); } void CancelWorker() { if (backgroundWorker1.IsBusy) { // Set CancellationPending property to true backgroundWorker1.CancelAsync(); // Unblock worker so it can see that _busy.Set(); } }