Best Practice für BackGroundWorker in WinForms unter Verwendung einer MVP-Architektur

Ich arbeite an einem Winforms-Projekt. Ich implementiere eine MVP-Architektur. Ich habe einige verarbeitungsintensive Jobs auf dem Presenter ausgeführt (Aus dem Dateisystem lesen und Bulk-Einfügungen in eine DB ausführen). Ich möchte diese Vorgänge in einem Hintergrund-Thread ausführen, ohne die Benutzeroberfläche zu sperren und die Steuerelemente für meine Ansicht (Fortschrittsbalken und Datagrid-Ansicht) zu aktualisieren.

Soll ich nur auf das Backgroundworker-Objekt in meinem Presenter zugreifen und seine Ereignisse im Presenter verarbeiten, indem die View-Event-Handler Ereignisse auslösen, die der Presenter abhört?

Zum Beispiel:

In der Ansicht:

private void backgroundWorker_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e)
        {
            if (WorkerProgressChange != null)
        {
            WorkerProgressChange(this, EventArgs.Empty);
        }
    }

Im Presenter:

_view.WorkerProgressChange += UpdateView;

Scheint das vernünftig? Kann jemand ein besseres Modell anbieten?

Vielen Dank!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage