Was ist der Unterschied zwischen Hintergrund, Vordergrund & Hauptfäden? Was sind die Diff-Typen von Threads in .NET?Was sind Hintergrund-, Vordergrund- und Hauptthreads?
Antwort
Ein Hintergrund-Thread (dessen Thread-Objekt die Background
-Eigenschaft auf true
gesetzt hat) verhindert nicht, dass eine Anwendung beendet wird.
Sobald alle normalen (Vordergrund-) Threads beendet wurden, werden alle laufenden Hintergrund-Threads sofort beendet. Wenn eine AppDomain entladen wird, werden außerdem alle Hintergrundthreads in der AppDomain sofort abgebrochen.
Die von der ThreadPool verwalteten Threads sind Hintergrundthreads.
Ein Vordergrund-Thread ist ein gewöhnlicher Thread.
Der Haupt-Thread ist der erste Thread, der das Programm gestartet hat. (Der Thread, der die Main
-Methode ausführt)
Weitere Informationen finden Sie unter here.
Die Unterscheidung ist in der Dokumentation kurzgefasst. Hintergrundthreads werden beim Beenden des Programms unterbrochen.
http://msdn.microsoft.com/en-us/library/h339syd0(VS.71).aspx
Nice link +1 :) –
ein Hintergrund-Thread ist genau das, es ist ein Faden, der von dem UI-Thread einer Anwendung im Hintergrund ausgeführt wird. Der UI-Thread in einer Winforms-Anwendung ist der Thread, der für das Neuzeichnen der Benutzeroberfläche und anderer Benutzerinteraktionen zuständig ist.
Wenn Sie lange laufende Prozesse in einen Hintergrundthread verschieben, wird die Benutzerfreundlichkeit verbessert. Hier ist eine gute intro document zum Threading für Sie.
SLaks, gibt es eine Begrenzung der Anzahl der Threads in Threadpool? – SoftwareGeek
Ja, da ist; lies den Link. Das Standardlimit beträgt 250 pro CPU. Sie können es ändern, indem Sie 'ThreadPool.SetMaxThreads' aufrufen. – SLaks
Ich könnte mich irren, aber ich dachte, dass die Grenze pro Kern war. Ein weiterer Punkt, es gibt sehr wenig Chancen, dass Sie so viele Threads in Ihrer App benötigen. Alles, was Sie tun werden, ist Threading Overhead hinzuzufügen. Aus Erfahrung scheint 2/3 Threads nach Kern eine gute Wahl zu sein. –