Thread in primo piano e in backgroundForeground and Background Threads

Un thread gestito è un thread in background o un thread in primo piano.A managed thread is either a background thread or a foreground thread. 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.Background threads are identical to foreground threads with one exception: a background thread does not keep the managed execution environment running. 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.Once all foreground threads have been stopped in a managed process (where the .exe file is a managed assembly), the system stops all background threads and shuts down.

Nota

Quando il runtime arresta un thread in background perché è in corso l'arresto del processo, non vengono generate eccezioni nel thread.When the runtime stops a background thread because the process is shutting down, no exception is thrown in the 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.However, when threads are stopped because the AppDomain.Unload method unloads the application domain, a ThreadAbortException is thrown in both foreground and background threads.

Usare la proprietà Thread.IsBackground per determinare se un thread è un thread in background o in primo piano oppure per modificarne lo stato.Use the Thread.IsBackground property to determine whether a thread is a background or a foreground thread, or to change its status. Un thread può essere sostituito con un thread in background in qualsiasi momento impostandone la proprietà IsBackground su true.A thread can be changed to a background thread at any time by setting its IsBackground property to true.

Importante

Lo stato di primo piano o di background di un thread non interessa l'esito di un'eccezione non gestita nel thread.The foreground or background status of a thread does not affect the outcome of an unhandled exception in the thread. In .NET Framework versione 2.0 un'eccezione non gestita nei thread in primo piano o in background comporta la terminazione dell'applicazione.In the .NET Framework version 2.0, an unhandled exception in either foreground or background threads results in termination of the application. Vedere Eccezioni in thread gestiti.See Exceptions in Managed Threads.

I thread che appartengono al pool di thread gestiti (ovvero, i thread la cui proprietà IsThreadPoolThread è true) sono thread in background.Threads that belong to the managed thread pool (that is, threads whose IsThreadPoolThread property is true) are background threads. Tutti i thread che accedono all'ambiente di esecuzione gestito dal codice non gestito sono contrassegnati come thread in background.All threads that enter the managed execution environment from unmanaged code are marked as background threads. Tutti i thread generati creando e avviando un nuovo oggetto Thread sono thread in primo piano per impostazione predefinita.All threads generated by creating and starting a new Thread object are by default foreground threads.

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.If you use a thread to monitor an activity, such as a socket connection, set its IsBackground property to true so that the thread does not prevent your process from terminating.

Vedere ancheSee Also

Thread.IsBackground
Thread
ThreadAbortException