Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Chiudere un processo in background...
giovedì 25 settembre 2008 - 18.16
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
lukepet
Profilo
| Junior Member
110
messaggi | Data Invio:
gio 25 set 2008 - 18:16
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
993
messaggi | Data Invio:
gio 25 set 2008 - 18:46
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
110
messaggi | Data Invio:
ven 26 set 2008 - 08:40
E non c'è nessun modo per terminarlo in maniera forzata?
aiedail92
Profilo
| Expert
993
messaggi | Data Invio:
ven 26 set 2008 - 15:39
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
6
messaggi | Data Invio:
mar 7 ott 2008 - 21:18
Puoi usare la libreria System.Process tramite la quale prendi l'id del processo lanciato, e quindi utilizzi il metodo Kill per ucciderlo
Torna su
Stanze Forum
Elenco Threads
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 !