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?
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?
No MP tecnici (non rispondo nemmeno!), usa il forum.
Il problema non era tanto per il metodo Abort ma da dove richiamare tale metodo. Premetto che ho una classe che si occupa di una serie di cose tra cui copiare dei file, ed è proprio questa classe che io avvio su Thread separati, ogni Thread un'istanza della classe. Adesso, mi consigli di avviare un Timer all'interno della classe stessa o all'esterno(con un array di timer) o è indifferente.
Poi per la questione della copia dei file, io uso il semplice File.Copy. Nel caso di un file di grosse dimensioni se io richiamo la Thread.Abort il thread viene interrotto solo alla fine della copia del file di grosse dimensioni.
Ciao e grazie
No lo fai dall'esterno:
codice:t.Start(); //Fai partire il thread t //eventualmente fai altro... t.join(2000); //attendi la fine del thread per un massimo di ulteriori 2 secondi if (t.ThreadState != ThreadState.Stopped) //t non è terminato t.Abort();
La Abort va chiamata dall'esterno (ovviamente).Originariamente inviato da mardok30
Il problema non era tanto per il metodo Abort ma da dove richiamare tale metodo
...
solo alla fine della copia del file di grosse dimensioni.
Se esegui un compito sincrono molto lungo, non potrai bloccarlo (per definizione).
La soluzione è la copia asincrona.
No MP tecnici (non rispondo nemmeno!), usa il forum.
Grazie per i suggerimenti, adesso mi tocca fare qualche ricerca sulla copia asincrona dei file e cartelle.
![]()