[VB.NET] Thread wird nicht abgebrochen

Masterclavat

Erfahrenes Mitglied
Hallo, :)

Ich habe mir heute mal einen kleinen Downloadmanager für Rapidshare gebastelt.
Der Download an sich verläuft in einem eigenen Thread. Natürlich möchte ich auch einen Abbrechen-Button haben, welcher aber leider nicht funktioniert. :(

Um abzubrechen wird folgender Code ausgeführt:
Visual Basic:
If BackgroundWorker1.IsBusy Then BackgroundWorker1.CancelAsync()

Nur leider passiert da nichts, d.h. der Download wird weiter ausgeführt.

Falls sich das jemand mal ansehen möchte, lade ich mal mein ganzes Projekt hoch.
 

Anhänge

  • Projekt.zip
    19,7 KB · Aufrufe: 16
Du musst beachten dass in deinem Thread (DoWork) eine Schleife durchlaufen wird. Diese wird trotz eines Threadkills nicht sofort unterbrochen. Ich würde dir Empfehlen eine Bool-Eigenschaft (Cancel) einzuführen welche Standardmäßig auf false ist. Bei nem Klick auf Abbrechen setzt du diese auf true. In deinem Do-Work überprüfst du bei jedem Schleifendurchgang (Downloadintervall) ob diese Variable true ist. Wenn ja dann brichst du die Funktion mit Return ab. (Davor kannst du ja noch eventuelle Abbruchaktionen durchführen).

Gruß Daniel
 
Du musst beachten dass in deinem Thread (DoWork) eine Schleife durchlaufen wird. Diese wird trotz eines Threadkills nicht sofort unterbrochen. Ich würde dir Empfehlen eine Bool-Eigenschaft (Cancel) einzuführen welche Standardmäßig auf false ist. Bei nem Klick auf Abbrechen setzt du diese auf true. In deinem Do-Work überprüfst du bei jedem Schleifendurchgang (Downloadintervall) ob diese Variable true ist. Wenn ja dann brichst du die Funktion mit Return ab. (Davor kannst du ja noch eventuelle Abbruchaktionen durchführen).

Gruß Daniel
Ist das nicht die CancellationPending (oder wie das heißt) Eigenschaft des BackgroundWorkers :confused:
CancelAsync tut ja im Prinzip auch nixs anderes als diese Eigenschaft auf true zu setzen. Abbrechen muss mans immer noch selbst.
 
Zurück