Vordergrund- und HintergrundthreadsForeground and Background Threads

Ein verwalteter Thread ist entweder ein Hintergrund- oder Vordergrundthread.A managed thread is either a background thread or a foreground thread. Hintergrundthreads sind mit einer Ausnahme identisch mit Vordergrundthreads: Ein Hintergrundthread erhält nicht die Ausführung der verwalteten Ausführungsumgebung aufrecht.Background threads are identical to foreground threads with one exception: a background thread does not keep the managed execution environment running. Sobald alle Vordergrundthreads in einem verwalteten Prozess (wobei die EXE-Datei eine verwaltete Assembly ist) beendet sind, beendet das System alle Hintergrundthreads und fährt herunter.Once all foreground threads have been stopped in a managed process (where the .exe file is a managed assembly), the system stops all background threads and shuts down.

Hinweis

Wenn die Runtime einen Hintergrundthread beendet, da der Prozess heruntergefahren wird, wird keine Ausnahme im Thread ausgelöst.When the runtime stops a background thread because the process is shutting down, no exception is thrown in the thread. Wenn Threads allerdings beendet werden, da die AppDomain.Unload-Methode die Anwendungsdomäne entlädt, wird eine ThreadAbortException sowohl im Vordergrund- als auch Hintergrundthread ausgelöst.However, when threads are stopped because the AppDomain.Unload method unloads the application domain, a ThreadAbortException is thrown in both foreground and background threads.

Verwenden Sie die Thread.IsBackground-Eigenschaft, um zu bestimmen, ob ein Thread ein Hintergrund- oder Vordergrundthread ist, oder um seinen Status zu ändern.Use the Thread.IsBackground property to determine whether a thread is a background or a foreground thread, or to change its status. Ein Thread kann jederzeit durch Festlegen seiner IsBackground-Eigenschaft auf true in einen Hintergrundthread geändert werden.A thread can be changed to a background thread at any time by setting its IsBackground property to true.

Wichtig

Der Vorder- oder Hintergrundstatus eines Threads wirkt sich nicht auf das Ergebnis einer nicht behandelten Ausnahme im Thread aus.The foreground or background status of a thread does not affect the outcome of an unhandled exception in the thread. In .NET Framework Version 2.0 führt eine nicht behandelte Ausnahme in Vorder- oder Hintergrundthreads zum Beenden der Anwendung.In the .NET Framework version 2.0, an unhandled exception in either foreground or background threads results in termination of the application. Siehe Ausnahmen in verwalteten Threads.See Exceptions in Managed Threads.

Threads, die zum verwalteten Threadpool gehört (d.h. Threads, deren IsThreadPoolThread-Eigenschaft true ist), sind Hintergrundthreads.Threads that belong to the managed thread pool (that is, threads whose IsThreadPoolThread property is true) are background threads. Alle Threads, die aus nicht verwaltetem Code in die verwaltete Ausführungsumgebung eingehen, werden als Hintergrundthreads markiert.All threads that enter the managed execution environment from unmanaged code are marked as background threads. Alle Threads, die durch Erstellen und Starten eines neuen Thread-Objekts generiert werden, sind standardmäßig Vordergrundthreads.All threads generated by creating and starting a new Thread object are by default foreground threads.

Wenn Sie einen Thread zur Überwachung einer Aktivität, z.B. einer Socketverbindung, verwenden, legen Sie seine IsBackground-Eigenschaft auf true fest, sodass der Thread nicht das Beenden Ihres Prozesses verhindert.If you use a thread to monitor an activity, such as a socket connection, set its IsBackground property to true so that the thread does not prevent your process from terminating.

Siehe auchSee also