Chiudere un processo in background...

giovedì 25 settembre 2008 - 18.16

lukepet Profilo | Junior Member

Ho una form in cui viene attivato un processo in background.

All'interno della form è inserito un button "Annulla". Vorrei che quando si clicca su quel button, oltre a chiudere la finestra venga killato il backgroundworker attivo in quel momento.

Ho inserito alcune istruzioni ma non funzionano. Quando chiudo il programma dal task manager ho notato che il processo è ancora attivo.

Queste sono le istruzioni che ho inserito:
Private Sub btnAnnulla_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAnnulla.Click
If Me.bkw_Download IsNot Nothing Then Me.bkw_Download.CancelAsync()
Me.bkw_Download.Dispose()
Me.Close()
End Sub

dove bkw_Download, all'interno della classe, è definito come: Friend WithEvents bkw_Download As System.ComponentModel.BackgroundWorker

Dove sbaglio?

aiedail92 Profilo | Expert

Ciao

Il fatto è che il metodo CancelAsync non fa altro che impostare la proprietà CancellationPending su True, sta quindi al codice del BackgroundWorker verificare periodicamente se deve continuare o meno l'esecuzione, verificando la proprietà CancellationPending e terminando la funzione in caso affermativo.

Luca

lukepet Profilo | Junior Member

E non c'è nessun modo per terminarlo in maniera forzata?

aiedail92 Profilo | Expert

L'unico modo sarebbe modificare il codice che inserisci nell'evento DoWork in modo da controllare ogni tanto se deve interrompersi o no. Se posti il codice che devi usare posso vedere come andrebbe modificato. Se invece tu potessi abbandonare il BackgroundWorker ed usare un Thread, la faccenda si semplificherebbe.

Luca

rgirardi Profilo | Newbie

Puoi usare la libreria System.Process tramite la quale prendi l'id del processo lanciato, e quindi utilizzi il metodo Kill per ucciderlo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5