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!