Heim >Backend-Entwicklung >C#.Net-Tutorial >So unterscheiden Sie zwischen C#-Vordergrund- und Hintergrundthreads
Die Common Language Runtime (CLR) von
Net
kann zwischen zwei verschiedenen Arten von Threads unterscheiden: Vordergrund-Threads und Hintergrund-Threads. Der Unterschied zwischen beiden besteht darin, dass die Anwendung alle Vordergrund-Threads ausführen muss, bevor sie beendet werden kann. Bei Hintergrund-Threads kann die Anwendung jedoch direkt beendet werden, ohne zu berücksichtigen, ob die Ausführung beendet ist.
Möglicherweise kennen Sie den Unterschied nicht:
<strong>前台线程</strong>
Der Unterschied und die Verbindung zwischen und 后台线程
:
1. Hintergrundthread nicht Verhindert, dass der Prozess beendet wird. Ein Prozess wird beendet, wenn alle zu ihm gehörenden Vordergrund-Threads beendet sind. Alle verbleibenden Hintergrundthreads werden gestoppt und nicht abgeschlossen.
2. Sie können den Vordergrund-Thread jederzeit in einen Hintergrund-Thread ändern, indem Sie die Eigenschaft Thread.IsBackground festlegen.
3. Unabhängig davon, ob es sich um einen Vordergrund-Thread oder einen Hintergrund-Thread handelt, wird der Prozess beendet, wenn im Thread eine Ausnahme auftritt.
4. Threads im verwalteten Thread-Pool sind alle Hintergrund-Threads, und Threads, die mit der neuen Thread-Methode erstellt wurden, sind standardmäßig alle Vordergrund-Threads.
.net
Threads, die mit Thread in der Umgebung erstellt wurden, sind standardmäßig Vordergrund-Threads, d. h. das Thread-Attribut IsBackground=false. Solange ein Vordergrund-Thread nicht beendet wurde, wird der Prozess nicht beendet beenden. Der Hauptthread ist ein Vordergrundthread. Unabhängig davon, ob der Thread endet, wird der Hintergrund-Thread automatisch beendet, solange alle Vordergrund-Threads beendet werden (einschließlich normaler Exits und abnormaler Exits). Im Allgemeinen werden Hintergrundthreads zur Verarbeitung kurzfristiger Aufgaben verwendet. In einem Webserver können Hintergrundthreads beispielsweise zur Verarbeitung von vom Client gesendeten Anforderungsinformationen verwendet werden. Der Vordergrund-Thread wird im Allgemeinen zur Bearbeitung von Aufgaben verwendet, die längere Wartezeiten erfordern, z. B. Programme, die Clientanforderungen auf einem Webserver überwachen, oder Programme, die regelmäßig bestimmte Systemressourcen scannen.
Fall
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
Das laufende Ergebnis ist, dass nach Abschluss der Ausführung durch den Front-Thread auch der Hintergrund-Thread ausgeführt wird Ausfahrt. Tatsächlich gibt es im Betriebssystem kein Konzept für Front- und Rear-Threads. Warum gibt es so etwas?
Was ist der Sinn? Dies ist ursprünglich der Fall, wenn unser Hauptthread endet, da unser Thread-Objekt freigegeben wird. Wenn andere Threads nicht freigegeben werden, ist der Schaden für andere Threads wirklich zu groß. C# stellt uns die Konzepte von Vordergrund-Threads und Hintergrund-Threads zur Verfügung, um die Bedienung von Threads zu vereinfachen.
Die Verwendung hängt vom jeweiligen Projekt ab. Hintergrundthreads dienen oft als Hilfsfunktionen. In WinForm wird der Thread-Prozess beispielsweise nach dem Schließen des Fensters immer noch nicht geschlossen. Dies liegt daran, dass der Haupt-Thread nach dem Schließen geschlossen wird.
Aus diesem Grund können Sie auch andere Threads sehen. Der Grund, warum Sie andere Threads sehen, kann natürlich sein, dass es mehrere Prozesse gibt und die Hauptthreads anderer Prozesse nicht geschlossen sind. Dies erfordert eine detaillierte Analyse.
Verwandte Lernempfehlungen: C-Video-Tutorial
Das obige ist der detaillierte Inhalt vonSo unterscheiden Sie zwischen C#-Vordergrund- und Hintergrundthreads. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!