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.
L'origine per questo contenuto è disponibile in GitHub, dove puoi anche creare ed esaminare i problemi e le richieste pull. Per altre informazioni, vedi la nostra guida per i collaboratori.
Feedback su .NET
.NET è un progetto open source. Seleziona un collegamento per fornire feedback:
Questo modulo esamina il processo di convalida del codice usando una combinazione di test, debug e gestione delle eccezioni. Illustra inoltre il processo di debug e i vantaggi offerti dal debugger del codice, insieme alle entità di sicurezza e ai processi sottostanti la gestione delle eccezioni.
Informazioni su come sincronizzare i dati per il multithreading in .NET. Scegliere strategie come aree del codice sincronizzate, sincronizzazione manuale o contesti sincronizzati.
Vedere come vengono gestite le eccezioni non gestite in .NET. La maggior parte delle eccezioni di thread non gestite procede naturalmente e porta alla terminazione dell'applicazione.
Informazioni sulle procedure consigliate per il threading gestito in .NET. Lavorare con situazioni difficili, ad esempio il coordinamento di molti thread o la gestione dei thread di blocco.
Informazioni sul threading, ad esempio processi e thread, uso di più thread e come usare il multithreading per aumentare la velocità di risposta o la velocità effettiva in .NET.
Vedere i collegamenti ad altri articoli sul threading gestito, che illustrano argomenti quali eccezioni, sincronizzazione dei dati, thread in primo piano e in background, archiviazione locale e altro ancora.