Freigeben über


Vordergrund- und Hintergrundthreads

Ein verwalteter Thread ist entweder ein Hintergrund- oder Vordergrundthread. Hintergrundthreads sind mit einer Ausnahme identisch mit Vordergrundthreads: Ein Hintergrundthread erhält nicht die Ausführung der verwalteten Ausführungsumgebung aufrecht. 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.

Hinweis

Wenn die Runtime einen Hintergrundthread beendet, da der Prozess heruntergefahren wird, wird keine Ausnahme im Thread ausgelöst. 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.

Verwenden Sie die Thread.IsBackground-Eigenschaft, um zu bestimmen, ob ein Thread ein Hintergrund- oder Vordergrundthread ist, oder um seinen Status zu ändern. Ein Thread kann jederzeit durch Festlegen seiner IsBackground-Eigenschaft auf true in einen Hintergrundthread geändert werden.

Wichtig

Der Vorder- oder Hintergrundstatus eines Threads wirkt sich nicht auf das Ergebnis einer nicht behandelten Ausnahme im Thread aus. Ein Ausnahmefehler in Vorder- oder Hintergrundthreads führt zum Beenden der Anwendung. Siehe Ausnahmen in verwalteten Threads.

Threads, die zum verwalteten Threadpool gehört (d.h. Threads, deren IsThreadPoolThread-Eigenschaft true ist), sind Hintergrundthreads. Alle Threads, die aus nicht verwaltetem Code in die verwaltete Ausführungsumgebung eingehen, werden als Hintergrundthreads markiert. Alle Threads, die durch Erstellen und Starten eines neuen Thread-Objekts generiert werden, sind standardmäßig Vordergrundthreads.

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.

Siehe auch