Как остановить BackgroundWorker на закрытии формы?

У меня есть форма, которая порождает BackgroundWorker, который должен обновить собственное текстовое поле формы (в основном потоке), следовательно,Invoke((Action) (...)); вызов.
Если вHandleClosingEvent я простоbgWorker.CancelAsync() тогда я получаюObjectDisposedException наInvoke(...) позвони, понятно. Но если я сижу вHandleClosingEvent и дождитесь завершения bgWorker, после чего .Invoke (...) никогда не вернется, также понятно.

Любые идеи, как закрыть это приложение без исключения или тупик?

Ниже приведены 3 соответствующих метода простого класса Form1:

    public Form1() {
        InitializeComponent();
        Closing += HandleClosingEvent;
        this.bgWorker.RunWorkerAsync();
    }

    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) {
        while (!this.bgWorker.CancellationPending) {
            Invoke((Action) (() => { this.textBox1.Text = Environment.TickCount.ToString(); }));
        }
    }

    private void HandleClosingEvent(object sender, CancelEventArgs e) {
        this.bgWorker.CancelAsync();
        /////// while (this.bgWorker.CancellationPending) {} // deadlock
    }

Ответы на вопрос(12)

Ваш ответ на вопрос