Zatrzymywanie pracownika w tle

Moja aplikacja używa pracownika działającego w tle, aby wykonać pracę w pętli. Mam to tak, że przy każdej iteracji pętli sprawdza, czy oczekujące anulowanie jest prawdziwe, a jeśli tak, to rozrywa pętlę. Wszystko OK, moja aplikacja przestaje przetwarzać po zakończeniu bieżącej iteracji pętli. Problem polega na tym, że myślę, że pracownik działający w tle nadal działa - jeśli kliknę przycisk, aby rozpocząć przetwarzanie ponownie, pojawia się błąd informujący, że pracownik w tle jest zajęty.

Zamierzałem pozbyć się pracownika, ale potem został on utworzony, gdy formularz się uruchamia, więc jeśli go pozbędę, to nie ma już miejsca, aby zacząć ponownie pracować. To, co naprawdę chcę zrobić, to powiedzieć pracownikowi działającemu w tle, że jest kompletny, jeśli kliknę przycisk „przestań przetwarzać”, więc jest gotowy, aby ponownie rozpocząć przetwarzanie po kliknięciu przycisku Start!

Chciałem to wypróbować:

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) 
{ 
    while (!backgroundWorker1.CancellationPending) 
    {
        // Start processing in a background thread so the GUI remains responsive,
        // pass in the name of the text file produced by 
        // PFDR FilenameLogic(txtLetterType.Text); 
    } 
}

questionAnswers(4)

yourAnswerToTheQuestion