Condividi tramite


Thread in primo piano e in background

Un thread gestito può essere in background o in primo piano. I thread in background sono identici a quelli in primo piano tranne per il fatto che i primi non mantengono attivo l'ambiente di esecuzione gestito. Dopo che tutti i thread in primo piano sono stati interrotti in un processo gestito, in cui il file con estensione exe è un assembly gestito, tutti i thread in background vengono interrotti e viene effettuato un arresto del sistema.

NotaNota

Quando un thread in background viene interrotto dal runtime perché il processo è in fase di chiusura, nel thread non viene generata alcuna eccezione.Tuttavia, quando i thread vengono interrotti perché il metodo AppDomain.Unload scarica il dominio applicazione, viene generata un'eccezione ThreadAbortException sia nei thread in primo piano sia in quelli in background.

Utilizzare la proprietà Thread.IsBackground per determinare se un thread è in background o in primo piano oppure per cambiarne lo stato. Un thread può essere cambiato in un thread in background in qualsiasi momento impostando la relativa proprietà IsBackground su true.

Nota importanteImportante

Lo stato in primo piano o in background di un thread non influisce sull'esito di un'eccezione non gestita nel thread.In .NET Framework versione 2.0 un'eccezione non gestita nei thread in primo piano o in background ha come risultato l'interruzione dell'applicazione.Per informazioni, vedere Eccezioni in thread gestiti.

I thread che appartengono al pool di thread gestiti, ossia quelli con la proprietà IsThreadPoolThread impostata su true, sono thread in background. Tutti i thread che entrano nell'ambiente di esecuzione gestito da codice non gestito vengono 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 utilizza un thread per monitorare un'attività, ad esempio una connessione socket, impostare la relativa proprietà IsBackground su true per evitare che il thread impedisca l'interruzione del processo.

Vedere anche

Riferimenti

Thread.IsBackground

Thread

ThreadAbortException