Threading (C# und Visual Basic)

Mit Threading können Sie in einem Visual Basic- oder C#-Programm mehrere Verarbeitungsschritte gleichzeitig ausführen, sodass Sie jeweils mehr als eine Operation ausführen können. Sie können Threading zum Beispiel verwenden, um Benutzereingaben zu überwachen, Hintergrundtasks zu starten und gleichzeitige Eingabestreams zu behandeln.

Threads verfügen über folgende Eigenschaften:

  • Threads ermöglichen die gleichzeitige Ausführung mehrerer Verarbeitungsschritte in einem Programm.

  • Der System.Threading-Namespace von .NET Framework vereinfacht die Verwendung von Threads.

  • Threads nutzen die Ressourcen einer Anwendung gemeinsam. Weitere Informationen finden Sie unter Verwenden von Threads und Threading.

Standardmäßig besitzt ein Visual Basic- bzw. C#-Programm einen Thread. Es können jedoch Hilfsthreads erstellt und verwendet werden, um parallel zum primären Thread Code auszuführen. Diese Threads werden häufig als Arbeitsthreads bezeichnet.

Mithilfe von Arbeitsthreads können Sie zeitaufwändige oder zeitkritische Aufgaben durchführen, ohne den primären Thread zu binden. Arbeitsthreads werden häufig in Serveranwendungen verwendet, um eingehende Anforderungen zu erfüllen, ohne darauf warten zu müssen, dass die vorherige Anforderung abgeschlossen ist. Arbeitsthreads werden auch verwendet, um "Hintergrundaufgaben" in Desktopanwendungen durchzuführen, damit der Hauptthread, der die Elemente der Benutzeroberfläche steuert, weiterhin auf Benutzeraktionen reagieren kann.

Threading löst einerseits Probleme mit Durchsatz und Reaktionsgeschwindigkeit, kann andererseits aber auch Probleme mit der gemeinsamen Nutzung von Ressourcen wie Deadlocks und Racebedingungen verursachen. Die Verwendung mehrerer Threads ist gut geeignet für Aufgaben, bei denen verschiedene Ressourcen benötigt werden, z. B. Dateihandles und Netzwerkverbindungen. Das Zuweisen von mehreren Threads zu einer einzelnen Ressource führt mit hoher Wahrscheinlichkeit zu Synchronisierungsproblemen, und wenn die Threads häufig blockiert sind und warten, wird dadurch der Vorteil der Verwendung von mehreren Threads zunichte gemacht.

Eine häufige verwendete Strategie besteht darin, zeitaufwändige und zeitkritische Aufgaben, bei denen nur wenige der von den anderen Threads verwendeten Ressourcen benötigt werden, auf Arbeitsthreads durchzuführen. Natürlich muss auf einige Ressourcen im Programm mit mehreren Threads zugegriffen werden. Für diese Fälle stellt der System.Threading-Namespace Klassen zum Synchronisieren von Threads bereit. Dazu gehören Mutex, Monitor, Interlocked, AutoResetEvent und ManualResetEvent.

Sie können einige dieser Klassen bzw. alle diese Klassen verwenden, um die Aktivitäten von mehreren Threads zu synchronisieren. Visual Basic und C# bieten jedoch auch in begrenztem Umfang Unterstützung für Multithreading. Beispielsweise stellt die Visual Basic SyncLock-Anweisung bzw. die Lock-Anweisung (C#) durch die implizite Verwendung von Monitor Synchronisierungsfunktionen bereit.

Tipp

In .NET Framework, Version 4 wird die Multithread-Programmierung durch die System.Threading.Tasks.Parallel-Klasse und die System.Threading.Tasks.Task-Klasse, Paralleles LINQ (PLINQ), neue parallele Auflistungsklassen im System.Collections.Concurrent-Namespace und ein neues Programmierungsmodell erheblich vereinfacht, das auf dem Konzept von Aufgaben und nicht auf Threads basiert. Weitere Informationen finden Sie unter Parallele Programmierung in .NET Framework.

Verwandte Themen

Titel

Beschreibung

Multithreadanwendungen (C# und Visual Basic)

Hier erfahren Sie, wie Sie Threads erstellen und verwenden.

Parameter und Rückgabewerte für Multithreadprozeduren (C# und Visual Basic)

In diesem Abschnitt erfahren Sie, wie Parameter bei Multithreadanwendungen übergeben und zurückgegeben werden.

Exemplarische Vorgehensweise: Multithreading mit der BackgroundWorker-Komponente (C# und Visual Basic)

Dieser Abschnitt bietet eine Anleitung zum Erstellen einer einfachen Multithreadanwendung.

Threadsynchronisierung (C# und Visual Basic)

Beschreibt, wie die Interaktionen von Threads gesteuert werden.

Threadzeitgeber (C# und Visual Basic)

Beschreibt, wie Prozeduren für separate Threads in festen Zeitintervallen ausgeführt werden.

Threadpooling (C# und Visual Basic)

Beschreibt die Verwendung einer Gruppe von Arbeitsthreads, die vom System verwaltet werden.

Gewusst wie: Verwenden eines Threadpools (C# und Visual Basic)

Veranschaulicht die synchronisierte Verwendung mehrerer Threads im Threadpool.

Verwaltetes Threading

Beschreibt, wie Threading im .NET Framework implementiert wird.

Enthaltene Buchkapitel

Threading in C# 3.0 in a Nutshell, Third Edition: A Desktop Quick Reference

Asynchronous Methods in C# 3.0 in a Nutshell, Third Edition: A Desktop Quick Reference

Threading and Synchronization in C# 3.0 Cookbook, Third Edition: More than 250 solutions for C# 3.0 programmers