Отмена фоновых задач

Когда мое приложение C # закрывается, оно иногда попадает в процедуру очистки. В частности, фоновый работник не закрывается. Вот как я пытаюсь это закрыть:

private void App_FormClosing (отправитель объекта, FormClosingEventArgs e) {backgroundWorker1.CancelAsync (); while (backgroundWorker1.IsBusy); // Застрял здесь. }

Есть ли другой способ, которым я должен делать это? Я использую Microsoft Visual C # 2008 Express Edition. Благодарю.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:

Фоновый рабочий, похоже, не завершает работу. Вот что у меня есть:

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
   while (!backgroundWorker1.CancellationPending)
   {
      // Do something.
   }
}

Я также изменил код очистки:

private void App_FormClosing(object sender, FormClosingEventArgs e)
{
   while (backgroundWorker1.IsBusy)
   {
      backgroundWorker1.CancelAsync();
      System.Threading.Thread.Sleep(1000);
   }
}

Есть ли что-то еще, что я должен делать?