Condividi tramite


Thread in primo piano e in secondo piano

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'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 (dove il file .exe è un assembly gestito), il sistema arresta tutti i thread in background e si arresta.

Annotazioni

Quando il runtime ferma un thread in background perché il processo sta terminando, nel thread non viene sollevata alcuna eccezione. Tuttavia, quando i thread vengono arrestati perché il AppDomain.Unload metodo scarica il dominio dell'applicazione, viene lanciato un ThreadAbortException sia nei thread in primo piano che in quelli in background.

Utilizzare la Thread.IsBackground proprietà per determinare se un thread è uno sfondo o un thread in primo piano o per modificarne lo stato. Un thread può essere modificato in un thread in background in qualsiasi momento impostandone la IsBackground proprietà su true.

Importante

Lo stato in primo piano o in background di un thread non influisce sul risultato 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 nei thread gestiti.

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

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

Vedere anche