Maison > Article > développement back-end > Comment faire la distinction entre les threads de premier plan et d'arrière-plan c#
Le Common Language Runtime (CLR) de
Net
peut distinguer deux types différents de threads : les threads de premier plan et les threads d'arrière-plan. La différence entre les deux est que l'application doit exécuter tous les threads de premier plan avant de pouvoir se fermer ; tandis que pour les threads d'arrière-plan, l'application peut se terminer directement sans se demander si elle a fini de s'exécuter. Tous les threads d'arrière-plan se fermeront lorsque l'application se terminera automatiquement.
Vous ne connaissez peut-être pas la différence :
<strong>前台线程</strong>
La différence et le lien entre et 后台线程
:
1. Le fil de fond ne fonctionne pas Empêchera le processus de se terminer. Un processus se termine lorsque tous les threads de premier plan qui lui appartiennent sont terminés. Tous les threads d’arrière-plan restants sont arrêtés et ne se termineront pas.
2. Vous pouvez changer le fil de premier plan en fil d'arrière-plan à tout moment en définissant la propriété Thread.IsBackground.
3. Qu'il s'agisse d'un thread de premier plan ou d'un thread d'arrière-plan, si une exception se produit dans le thread, le processus se terminera.
4. Les threads du pool de threads gérés sont tous des threads d'arrière-plan, et les threads créés à l'aide de la nouvelle méthode Thread sont tous des threads de premier plan par défaut.
.net
Les threads créés à l'aide de Thread dans l'environnement sont des threads de premier plan par défaut, c'est-à-dire que l'attribut de thread IsBackground=false Dans le processus, tant qu'un thread de premier plan n'est pas terminé, le processus ne se terminera pas. mettre fin. Le fil principal est un fil de premier plan. Le thread d'arrière-plan, que le thread se termine ou non, tant que tous les threads de premier plan se terminent (y compris la sortie normale et la sortie anormale), le processus se terminera automatiquement. Généralement, les threads d'arrière-plan sont utilisés pour traiter des tâches à court terme. Par exemple, dans un serveur Web, les threads d'arrière-plan peuvent être utilisés pour traiter les informations de demande envoyées par le client. Le thread de premier plan est généralement utilisé pour gérer des tâches qui nécessitent une attente à long terme, telles que les programmes qui surveillent les requêtes des clients sur un serveur Web ou les programmes qui analysent régulièrement certaines ressources système.
Cas
static void Main(string[] args) { SampleTread thead = new SampleTread(10); SampleTread theadback = new SampleTread(10); var theadone = new Thread(thead.CountNumbers); var theadtwo = new Thread(theadback.CountNumbers); theadtwo.IsBackground = true; theadone.Start(); theadtwo.Start(); }
class SampleTread { private readonly int _iterations; public SampleTread(int iterations) { this._iterations = iterations; } public void CountNumbers() { for (int i = 0; i < _iterations; i++) { Sleep(TimeSpan.FromSeconds(0.5)); Console.WriteLine($"{ CurrentThread.Name}print{i}"); } } }
Analyse
Le résultat en cours est qu'une fois l'exécution du thread avant terminée, le thread d'arrière-plan sera également sortie. En fait, il n'y a pas de concept de threads avant et arrière dans le système d'exploitation, alors pourquoi existe-t-il une telle chose ?
A quoi ça sert ? C'est à l'origine le cas. Lorsque notre thread principal se termine, les autres threads devraient également se terminer, car notre objet thread est libéré lorsque le thread principal se termine, le préjudice causé aux autres threads sera donc vraiment important. nous fournit les concepts de threads de premier plan et de threads d'arrière-plan pour faciliter le fonctionnement des threads.
Quant à la façon de l'utiliser, cela dépend du projet spécifique. Les fils d'arrière-plan servent souvent de fonctions auxiliaires. Par exemple, dans WinForm, le processus de thread n'est toujours pas fermé après la fermeture de la fenêtre. En effet, le thread principal est arrêté après la fermeture. Le thread principal sera fermé en toute sécurité après la fermeture des autres threads.
C'est pourquoi vous pouvez également voir d'autres fils de discussion. Bien sûr, la raison pour laquelle vous voyez d'autres fils de discussion peut être qu'il existe plusieurs processus et que les fils de discussion principaux des autres processus ne sont pas fermés.
Recommandations d'apprentissage associées : Tutoriel vidéo C
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!