Condividi tramite


Stati di thread

Aggiornamento: novembre 2007

La proprietà ThreadState fornisce informazioni relative allo stato di un thread. Poiché i thread possono essere in più di uno stato in un determinato momento, il valore memorizzato in ThreadState può essere una combinazione dei valori nell'enumerazione ThreadState. Se ad esempio un thread viene bloccato su una chiamata a Wait e un altro thread chiama il metodo Abort su quello stesso thread, il thread si trova sia nello stato WaitSleepJoin che nello stato AbortRequested contemporaneamente.

Modifica dello stato dei thread

Una volta avviato un thread, è possibile chiamarne i metodi per modificarne lo stato. È ad esempio possibile provocare la sospensione di un thread per un numero fisso di millisecondi chiamando Thread.Sleep. Il metodo Sleep prende un timeout come parametro, vale a dire il numero di millisecondi in cui il thread rimane bloccato.

Se si chiama Sleep con l'argomento Infinite il thread verrà sospeso fino alla chiamata di Interrupt da parte di un altro thread. Il metodo Interrupt riattiva il thread di destinazione, indipendentemente dal tipo di sospensione in cui si trova e provoca la generazione di un'eccezione.

È inoltre possibile sospendere un thread chiamando il metodo Suspend. Quando un thread chiama Suspend su se stesso, la chiamata viene bloccata fino a quando un altro thread non la riprende chiamando Resume. Quando un thread chiama Suspend su un altro thread, la chiamata non è bloccante e provoca la sospensione dell'altro thread. Se si chiama Resume si annulla lo stato di sospensione di un altro thread e si determina il ripristino della relativa esecuzione. A differenza di Sleep, Suspend non interrompe immediatamente un thread. La sospensione avverrà solo quando Common Language Runtime avrà stabilito che è stato raggiunto un punto sicuro.

Il metodo Abort interrompe un thread in esecuzione generando un'eccezione ThreadAbortException che causa l'annullamento del thread.

Per informazioni dettagliate su questi metodi, vedere Thread.

Vedere anche

Concetti

Applicazioni multithread

Sincronizzazione di thread

Parametri e valori restituiti per routine multithreading

Operazioni multithread con form e controlli

Delegati e operatore AddressOf

Riferimenti

System.Threading

Istruzione SyncLock

Altre risorse

Multithreading nei componenti