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
ASP.NET 2.0 / 3.5 / 4.0
TERMINARE UN THREAD
lunedì 30 luglio 2007 - 08.07
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
memmo77
Profilo
| Expert
683
messaggi | Data Invio:
lun 30 lug 2007 - 08:07
Salve, ho il seguente problema. Nella mia procedura ho inserito l'esecuzione di un thread per far partire contemporaneamente due sub:
Dim T As Thread
Try
Aggiorna_Stato()
T = New Thread(AddressOf Elaborazione)
T.Start()
Catch ex As Exception
Throw New Exception(ex.Message)
End Try
una per una elaborazione, l'altra per stabilire l'avanzamento di una barra di progresso. Nella procedura è previsto un pulsante di stop, al click di questo, lelaborazione si interromepe, tutto si ristabilisce, ma non riesco a fermare efrfettivamente il THREAD. Sapreste indicarmi come interromperlo senza avere troppi problemi?
. Grazie a tutti
Ciciu
Profilo
| Senior Member
233
messaggi | Data Invio:
lun 30 lug 2007 - 08:15
Ciao.
Dovrebbe esserTi sufficiente la chiamata a T.Abort()
Questa chiamata eleva l'eccezione ThreadAbortException, che puoi intercettare.
Ciao - FabioG
Fabio G
memmo77
Profilo
| Expert
683
messaggi | Data Invio:
lun 30 lug 2007 - 08:38
Ok, questa soluzione mi sembra ideale, solo una domanda, dove lo intercetto il thread per fare l'abort? Devo metterlo in una session e intercettarlo nell'evento stop? Li lo abortisco e gestisco l'eccezione?
Grazie mille ciao
Ciciu
Profilo
| Senior Member
233
messaggi | Data Invio:
lun 30 lug 2007 - 08:40
A rigor di logica dovresTi intercettarlo nel thread principale, quello da cui parte il Tuo thread.
Immagino che il blocco try...catch che hai implementato possa già servire allo scopo. Aggiungi solo l'eccezione ThreadAbortException in una catch PRIMA di quella che hai già.
Ciao - FabioG
Fabio G
memmo77
Profilo
| Expert
683
messaggi | Data Invio:
lun 30 lug 2007 - 08:53
Ho provato a fare come dici te,
Dim T As Thread
Try
Aggiorna_Stato()
T = New Thread(AddressOf Elaborazione)
Session("T") = T
T.Start()
If Session("Modalità_Termine") = "Stop" Then
T.Abort()
End If
Catch e As ThreadAbortException
Throw New Exception(e.Message)
Catch ex As Exception
Throw New Exception(ex.Message)
End Try
Ma una volta partito lo start, non mi entra + in questa sub. Quindi non intercetta l'abort. Che dici la risolvo con una sesison?
Ciciu
Profilo
| Senior Member
233
messaggi | Data Invio:
lun 30 lug 2007 - 09:05
Il metodo Abort dovrebbe schiantare il thread. Questo lo hai verificato ? Diciamo che se lanci la Tua applicazione, il metodo Abort dovrebbe schiantarTi, e dovrebbe aprirsi il debug alla riga che genera l'eccezione ThreadAbortException sull'istruzione che era in esecuzione al momento dell'Abort.
Probabilmente devi gestire questa eccezione DENTRO il thread.
Perdonami, ma è un argomento che sto approfondendo or ora.
Ciao - FabioG
Fabio G
memmo77
Profilo
| Expert
683
messaggi | Data Invio:
lun 30 lug 2007 - 09:36
Ok ho risolto, gestendo l'abort sulla prima eccezione generata, solo che allo start me lo sono messo in una session e allo stop l'ho passato di nuovo ad una variabile di tipo thred alla quale poi passo l'abort. Sembra comportarsi abbastanza bene. Grazie mille ciao
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 !