2009-08-25 7 views
9

Was ist der Unterschied zwischen einem Hintergrund- und einem Vordergrund-Thread?Was ist in CLR der Unterschied zwischen einem Hintergrund- und einem Vordergrund-Thread?

+0

Erläuterung: C# hat kein Konzept von Hintergrund und Vordergrund Threads. Die Unterscheidungen, die bestimmte Szenarien zu einem Thread machen, werden auf einer CLR/COM-Ebene durchgeführt. – JaredPar

+5

C# hat auch nicht das Konzept einer Giraffe, aber Sie können eine Klasse mit einer Eigenschaft namens Giraffe machen. IsBackground ist eine Eigenschaft eines Objekts im Framework. Denken Sie daran, dass C# _die Sprache_ nicht das .NET-Framework ist. Es ist nur eine Programmiersprache. –

Antwort

20

Von MSDN:

Hintergrund-Threads sind identisch mit Vordergrund Fäden mit einer Ausnahme: ein Hintergrund-Thread nicht die nicht halten Ausführungsumgebung verwaltet läuft.

+0

Sie meinen, dass es verhindern kann, dass ein aktueller Prozess beendet wird ... – Guffa

+0

@Guffa: Ich verstehe nicht. Sie streiten sich über eine Interpretation der MSDN-Dokumentation? – Amy

+0

Hat es nicht auch eine niedrigere Kontextwechselpriorität? –

15

Siehe this page:

  • Vordergrund Fäden haben die Fähigkeit von Beenden der aktuellen Anwendung zu verhindern. Die CLR wird eine Anwendung nicht herunterfahren (d. H. Die Host-AppDomain entladen), bis alle Vordergrund-Threads beendet sind.

  • Hintergrundthreads (manchmal als Daemon-Threads bezeichnet) werden von der CLR als ausgabefähige Ausführungspfade angesehen, die zu jedem Zeitpunkt ignoriert werden können (auch wenn sie gerade einige Arbeitseinheiten bearbeiten). Wenn alle Vordergrund-Threads beendet sind, werden alle Hintergrundthreads automatisch beendet, wenn die Anwendungsdomäne entladen wird.

+0

wenn Leute Hintergrund Thread verwenden sollten ..... ein gutes Beispiel geben. – Mou

4

sind standardmäßig Themen Vordergrund Threads, das heißt, sie halten die Anwendung am Leben, so lange wie einer von ihnen ausgeführt wird. C# unterstützt auch Hintergrund-Threads, die die -Anwendung nicht selbständig am Leben erhalten - sie endet sofort, sobald alle Vordergrund-Threads beendet sind.

0

Wenn einer der Vordergrund- oder Hintergrundthreads beendet wird, wird die Anwendung sofort beendet. Es ist möglich, den Thread während der Anwendungslebensdauer jederzeit von Vordergrund zu Hintergrund und umgekehrt zu ändern. CLR erstellt zwei Arten von Threads, um AppDomain besser zu unterstützen. Wenn der Vordergrund-Thread beendet wird, beendet CLR zwangsweise alle Hintergrundthreads, die ausgeführt werden. Alle Threads, die mit systemeigenem Code erstellt wurden und in die Umgebung für die verwaltete Ausführung gelangen, sind als Hintergrundthreads gekennzeichnet.

Verwandte Themen