Condividi tramite


Thread in primo piano e in background

Un thread gestito è un thread in background o un thread in primo piano. I thread in background sono identici ai thread in primo piano con un'unica eccezione: un thread in background non mantiene in esecuzione l'ambiente di esecuzione gestito. Dopo che tutti i thread in primo piano sono stati arrestati in un processo gestito (in cui il file EXE è un assembly gestito), il sistema arresta tutti i thread in background e si arresta.

Nota

Quando il runtime arresta un thread in background perché è in corso l'arresto del processo, non vengono generate eccezioni nel thread. Quando tuttavia i thread vengono arrestati perché il metodo AppDomain.Unload scarica il dominio dell'applicazione, viene generata un'eccezione ThreadAbortException nei thread in primo piano e in background.

Usare la proprietà Thread.IsBackground per determinare se un thread è un thread in background o in primo piano oppure per modificarne lo stato. Un thread può essere sostituito con un thread in background in qualsiasi momento impostandone la proprietà IsBackground su true.

Importante

Lo stato di primo piano o di background di un thread non interessa l'esito di un'eccezione non gestita nel thread. Un'eccezione non gestita nei thread in primo piano o in background comporta la terminazione dell'applicazione. Vedere Eccezioni in thread gestiti.

I thread che appartengono al pool di thread gestiti (ovvero, i thread la cui proprietà IsThreadPoolThread è true) sono thread in background. Tutti i thread che accedono all'ambiente di esecuzione gestito dal codice non gestito sono contrassegnati come thread in background. Tutti i thread generati creando e avviando un nuovo oggetto Thread sono thread in primo piano per impostazione predefinita.

Se si usa un thread per monitorare un'attività, ad esempio una connessione socket, impostarne la proprietà IsBackground su true in modo che il thread non impedisca la terminazione del processo.

Vedi anche