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
Bloccare un Thread che dura troppo
giovedì 22 marzo 2012 - 23.45
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
VB.NET
|
.NET 4.0
luka82
Profilo
| Junior Member
156
messaggi | Data Invio:
gio 22 mar 2012 - 23:45
Dovrei poter bloccare un Thread nel caso in cui questo duri più di Tot minuti. Creo un Thread con
Dim t As New System.Threading.Thread(Sub() AvviaProcesso)
t.IsBackground = True
t.Start()
come procedo?
b4p3p
Profilo
| Newbie
10
messaggi | Data Invio:
gio 29 mar 2012 - 21:31
Ciao,
se non hai modo di eseguire dei controlli al suo interno, credo tu lo possa bloccare con un secondo thread di controllo.
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
ven 30 mar 2012 - 14:51
Ciao,
l'unico modo è tenere il riferimento a quel thread, magari lo metti su una List<T> oppure un Dictionary<...,T> in modo da potere poi avere il riferimento da codice, ed andare a chiamare "Abort()" oppure "Kill()" di questo.
Per sapere invece da quanto tempo è in esecuzione, ti devi settare una variabile con il valore della data corrente (appunto la data di inizio) appena prima di lanciarlo con lo Start(), e quindi su un timer o su un tuo altro thread, vedere quanto tempo è passato.
Magari come ti dicevo prima, usando una Dictionary<T,DateTime> puoi tenerti già l'informazione a portata di mano, e quindi andare a ciclare su tutta la collection per vedere quali sono in esecuzione (proprietà IsAlive se non ricordo male) da troppo tempo e killarli.
Io provederei a fare qualcosa del genere...
Ciao.
Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo
luka82
Profilo
| Junior Member
156
messaggi | Data Invio:
ven 30 mar 2012 - 14:57
Avevo provveduto a fare una cosa del genere ma nel Thread può capitare di dover fare una copia di un file molto grande(cosa che faccio con il classico File.Copy), di conseguenza se pure faccio dall'esterno(nel Timer) Thread1.Abort la copia non viene interrotta.
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
ven 30 mar 2012 - 15:14
Ciao,
File.Copy non so cosa faccia esattamente a livello di chiamate di sistema, ma capisco il tuo problema, è un'operazione che non riesci ad interrompere.
Puoi però fare a meno di usare quella funzione "out of the box" e farti la copia dei byte del file usando uno Stream per la lettura ed uno per la scrittura.
Ad esempio come fatto qui:
http://stackoverflow.com/questions/6044629/file-copy-with-progress-bar
Ciao.
Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo
luka82
Profilo
| Junior Member
156
messaggi | Data Invio:
ven 30 mar 2012 - 15:21
Grazie, seguirò questa strada...
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
ven 30 mar 2012 - 15:37
>Grazie, seguirò questa strada...
di nulla, quando/se riesci magari posta 2 parole su come hai fatto se ti ricordi.
Ciao.
Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo
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 !