Entwickler-Ecke

WinForms - BackgroundWorker - CancellationPending


peterbe - Di 19.08.14 20:12
Titel: BackgroundWorker - CancellationPending
hallo zusammen,

ich habe eine langes programm und möchte es jederzeit abbrechen können.
Ich habe folgende Abfrage.



C#-Quelltext
1:
2:
3:
4:
5:
if (backgroundWorker1.CancellationPending) //Abfrage,ob Abbrechen-Button betätigt wurde
{
    backgroundWorker1.ReportProgress(0);     
    break;
}


Nun möchte ich nicht jedes mal diese Abfage in meinem Dowork-thread haben, wegen unschön programmiert.
Kann ich die Abfrage irgendwie nach außen verlagern und durch einen Methoden-Aufruf immer wieder abfragen???

Mfg
peter

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt


Ralf Jansen - Di 19.08.14 21:03

Zitat:
Nun möchte ich nicht jedes mal diese Abfage in meinem Dowork-thread haben, wegen unschön programmiert.


Das machst du vermutlich einmal an einer Stelle in der DoWork Methode auch wenns ein 5-zeiler ist sehe ich nicht wieso das unschön sein sollte.
Was ist der Sinn von "ReportProgress(0);"?


peterbe - Mi 20.08.14 18:29

ReportProgress(0); setze den Ladebalken immer auf 0% wenn abbgebrochen wird.


Ralf Jansen - Mi 20.08.14 18:36

Zitat:
ReportProgress(0); setze den Ladebalken immer auf 0% wenn abbgebrochen wird.


Jaja Logisch ;) ... aber die eigentliche Frage wahr der Sinn dahinter. Wenn ich nach 70% einen Thread abbreche hat der für mich 70% geschafft und ist bei 70% abgebrochen worden und eben nicht bei 0%. Ich hatte die ~Angst~ das du dir selbst irgendwie denn Abbruch so signalisieren wolltest anstatt einfach in DoWork beim abbrechen Cancel in den EventArgs zu setzen.