Ich habe einen Hintergrundarbeiter mit ein paar verschiedenen Funktionen und Schleifen. Jedes Beispiel, das ich im Internet gefunden habe, ist nur mit einer Schleife bzw. einer Funktion. Nun möchte ich wissen, ob es eine kurze Lösung gibt, um den Arbeiter mit einer Schaltfläche abzubrechen. Ich kenne nur zwei Lösungen, die nicht optimal sind, denke ich.Wie kann man einen Hintergrundarbeiter mit mehreren Methoden in C# optimal abbrechen?
1: Fügen Sie eine if/else zu jeder Funktion/Schleife -> lange und verwirrende Code
loop
{
if (worker.CancellationPending == true)
{
e.Cancel = true;
break;
}
else
{
do calculation
}
}
2: Kill the Background Thread mit wie hier abbrechen (How to “kill” background worker completely?)
Ich möchte, dass die Die Berechnung stoppt sofort nach dem Drücken der Cancel-Taste, egal welche Schleife oder Funktion gerade ausgeführt wird. Gibt es bessere Möglichkeiten als meine?
Edit: Und ich weiß nicht, warum How can I cancel a Task without LOOP sollte mein Problem lösen, weil ich viele verschiedene Schleifen haben.
Mögliche Duplikat [Wie kann ich eine Aufgabe abbrechen ohne LOOP] (http://stackoverflow.com/questions/24312139/how-can-i-cancel-a-task-without-loop) – user3185569