Voorgrond- en achtergrondthreads
Een beheerde thread is een achtergrondthread of een voorgrondthread. Achtergrondthreads zijn identiek aan voorgrondthreads met één uitzondering: een achtergrondthread houdt de beheerde uitvoeringsomgeving niet actief. Zodra alle voorgrondthreads zijn gestopt in een beheerd proces (waarbij het .exe bestand een beheerde assembly is), stopt het systeem alle achtergrondthreads en wordt afgesloten.
Notitie
Wanneer de runtime een achtergrondthread stopt omdat het proces wordt afgesloten, wordt er geen uitzondering gegenereerd in de thread. Wanneer threads echter worden gestopt omdat de AppDomain.Unload methode het toepassingsdomein verwijdert, wordt er een ThreadAbortException gegenereerd in zowel voorgrond- als achtergrondthreads.
Gebruik de Thread.IsBackground eigenschap om te bepalen of een thread een achtergrond- of voorgrondthread is of om de status ervan te wijzigen. Een thread kan op elk gewenst moment worden gewijzigd in een achtergrondthread door de IsBackground eigenschap in te stellen op true
.
Belangrijk
De voorgrond- of achtergrondstatus van een thread heeft geen invloed op het resultaat van een niet-verwerkte uitzondering in de thread. Een niet-verwerkte uitzondering in voorgrond- of achtergrondthreads leidt tot beëindiging van de toepassing. Zie Uitzonderingen in beheerde threads.
Threads die deel uitmaken van de beheerde threadgroep (dat wil gezegd threads waarvan IsThreadPoolThread de eigenschap is true
) zijn achtergrondthreads. Alle threads die de beheerde uitvoeringsomgeving vanuit niet-beheerde code invoeren, worden gemarkeerd als achtergrondthreads. Alle threads die worden gegenereerd door het maken en starten van een nieuw Thread object zijn standaard voorgrondthreads.
Als u een thread gebruikt om een activiteit, zoals een socketverbinding, te bewaken, stelt u de IsBackground eigenschap ervan true
zodanig in dat het proces niet kan worden beëindigd.