Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. |
Übersetzung
Original
|
Thread-Klasse
Erstellt und steuert einen Thread, legt dessen Priorität fest und ruft den Status ab.
Assembly: mscorlib (in mscorlib.dll)
Der Thread-Typ macht die folgenden Member verfügbar.
| Name | Beschreibung | |
|---|---|---|
|
Thread(ParameterizedThreadStart) | Initialisiert eine neue Instanz der Thread-Klasse und gibt dabei einen Delegaten an, der das Übergeben eines Objekts an den Thread bei dessen Start ermöglicht. |
|
Thread(ThreadStart) | Initialisiert eine neue Instanz der Thread-Klasse. |
|
Thread(ParameterizedThreadStart, Int32) | Initialisiert eine neue Instanz der Thread-Klasse und gibt dabei einen Delegaten, der das Übergeben eines Objekts an den Thread bei dessen Start ermöglicht, sowie eine maximale Stapelgröße für den Thread an. |
|
Thread(ThreadStart, Int32) | Initialisiert eine neue Instanz der Thread-Klasse und gibt die maximale Stapelgröße für den Thread an. |
| Name | Beschreibung | |
|---|---|---|
|
ApartmentState | Veraltet. Ruft den Apartmentzustand dieses Threads ab oder legt diesen fest. |
|
CurrentContext | Ruft den aktuellen Kontext ab, in dem der Thread ausgeführt wird. |
|
CurrentCulture | Ruft die Kultur für den aktuellen Thread ab oder legt diese fest. |
|
CurrentPrincipal | Ruft den aktuellen Principal des Threads (für rollenbasierte Sicherheit) ab oder legt diesen fest. |
|
CurrentThread | Ruft den derzeit ausgeführten Thread ab. |
|
CurrentUICulture | Ruft die aktuelle Kultur ab, mit deren Hilfe der Ressourcen-Manager zur Laufzeit kulturabhängige Ressourcen sucht, oder legt diese fest. |
|
ExecutionContext | Ruft ein ExecutionContext-Objekt ab, das Informationen zu den verschiedenen Kontexten des aktuellen Threads enthält. |
|
IsAlive | Ruft einen Wert ab, der den Ausführungsstatus des aktuellen Threads angibt. |
|
IsBackground | Ruft einen Wert ab, der angibt, ob es sich bei einem Thread um einen Hintergrundthread handelt, oder legt diesen fest. |
|
IsThreadPoolThread | Ruft einen Wert ab, der angibt, ob ein Thread zu dem verwalteten Threadpool gehört. |
|
ManagedThreadId | Ruft einen eindeutigen Bezeichner für den aktuellen verwalteten Thread ab. |
|
Name | Ruft den Namen des Threads ab oder legt diesen fest. |
|
Priority | Ruft einen Wert ab, der die Planungspriorität eines Threads angibt, oder legt diesen fest. |
|
ThreadState | Ruft einen Wert ab, der die Zustände des aktuellen Threads enthält. |
| Name | Beschreibung | |
|---|---|---|
|
Abort() | Löst eine ThreadAbortException im Thread aus, für den der Aufruf erfolgte, um das Beenden des Threads zu beginnen. Durch den Aufruf dieser Methode wird der Thread i. d. R. beendet. |
|
Abort(Object) | Löst eine ThreadAbortException im Thread aus, für den der Aufruf erfolgte, um das Beenden des Threads zu beginnen. Gleichzeitig werden Ausnahmeinformationen über das Beenden des Threads bereitgestellt. Durch den Aufruf dieser Methode wird der Thread i. d. R. beendet. |
|
AllocateDataSlot | Reserviert einen unbenannten Datenslot für alle Threads. Eine höhere Leistung erzielen Sie, wenn Sie stattdessen Felder verwenden, die mit dem ThreadStaticAttribute-Attribut markiert sind. |
|
AllocateNamedDataSlot | Reserviert einen benannten Datenslot für alle Threads. Eine höhere Leistung erzielen Sie, wenn Sie stattdessen Felder verwenden, die mit dem ThreadStaticAttribute-Attribut markiert sind. |
|
BeginCriticalRegion | Benachrichtigt einen Host, dass die Ausführung im Begriff ist, zu einem Codebereich überzugehen, in dem die Auswirkungen eines Threadabbruchs oder einer nicht behandelten Ausnahme andere Aufgaben in der Anwendungsdomäne gefährden könnten. |
|
BeginThreadAffinity | Benachrichtigt einen Host, dass verwalteter Code im Begriff ist, Anweisungen auszuführen, die von der Identität des aktuellen physischen Betriebssystemthreads abhängen. |
|
DisableComObjectEagerCleanup | Deaktiviert die automatische Bereinigung von Runtime Callable Wrappern (RCW) für den aktuellen Thread. |
|
EndCriticalRegion | Benachrichtigt einen Host, dass die Ausführung im Begriff ist, zu einem Codebereich überzugehen, in dem die Auswirkungen eines Threadabbruchs oder einer nicht behandelten Ausnahme auf die aktuelle Aufgabe beschränkt sind. |
|
EndThreadAffinity | Benachrichtigt einen Host, dass verwalteter Code die Ausführung von Anweisungen beendet hat, die von der Identität des aktuellen physischen Betriebssystemthreads abhängen. |
|
Equals(Object) | Bestimmt, ob das angegebene Object und das aktuelle Object gleich sind. (Von Object geerbt.) |
|
Finalize |
Gibt alle von der CriticalFinalizerObject-Klasse verwendeten Ressourcen frei.
(Von CriticalFinalizerObject geerbt.) In XNA Framework 3.0 wird dieser Member von Object.Finalize(). In wird dieser Member von Object.Finalize(). |
|
FreeNamedDataSlot | Entfernt die Zuordnung zwischen einem Namen und einem Slot für alle Threads in dem Prozess. Eine höhere Leistung erzielen Sie, wenn Sie stattdessen Felder verwenden, die mit dem ThreadStaticAttribute-Attribut markiert sind. |
|
GetApartmentState | Gibt einen ApartmentState-Wert zurück, der den Apartmentzustand angibt. |
|
GetCompressedStack | Veraltet. Gibt ein CompressedStack-Objekt zurück, mit dem der Stapel für den aktuellen Thread erfasst werden kann. |
|
GetData | Ruft in der aktuellen Domäne des aktuellen Threads den Wert aus dem angegebenen Slot für den aktuellen Thread ab. Eine höhere Leistung erzielen Sie, wenn Sie stattdessen Felder verwenden, die mit dem ThreadStaticAttribute-Attribut markiert sind. |
|
GetDomain | Gibt die aktuelle Domäne zurück, in der der aktuelle Thread ausgeführt wird. |
|
GetDomainID | Gibt einen eindeutigen Bezeichner der Anwendungsdomäne zurück. |
|
GetHashCode |
Gibt einen Hashcode für den aktuellen Thread zurück.
(Überschreibt Object.GetHashCode().) In XNA Framework 3.0 wird dieser Member von Object.GetHashCode(). In wird dieser Member von Object.GetHashCode(). |
|
GetNamedDataSlot | Sucht einen benannten Datenslot. Eine höhere Leistung erzielen Sie, wenn Sie stattdessen Felder verwenden, die mit dem ThreadStaticAttribute-Attribut markiert sind. |
|
GetType | Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.) |
|
Interrupt | Unterbricht einen Thread, der sich im WaitSleepJoin-Threadzustand befindet. |
|
Join() | Blockiert den aufrufenden Thread, bis ein Thread beendet wird, während das Standard-COM- und das SendMessage-Pumping fortgesetzt werden. |
|
Join(Int32) | Blockiert den aufrufenden Thread, bis ein Thread beendet wird oder die festgelegte Zeit verstreicht, während das Standard-COM- und das SendMessage-Pumping fortgesetzt werden. |
|
Join(TimeSpan) | Blockiert den aufrufenden Thread, bis ein Thread beendet wird oder die festgelegte Zeit verstreicht, während das Standard-COM- und das SendMessage-Pumping fortgesetzt werden. |
|
MemberwiseClone | Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.) |
|
MemoryBarrier | Synchronisiert den Speicherzugriff wie folgt: Der Prozessor, der den aktuellen Thread ausführt, kann Anweisungen nicht so neu anordnen, dass Speicherzugriffe vor dem Aufruf von MemoryBarrier nach Speicherzugriffen ausgeführt werden, die nach dem Aufruf MemoryBarrier erfolgen. |
|
ResetAbort | Bricht ein Abort ab, das für den aktuellen Thread angefordert wurde. |
|
Resume | Veraltet. Nimmt die Ausführung eines angehaltenen Threads wieder auf. |
|
SetApartmentState | Legt den Apartmentzustand eines Threads fest, bevor dieser gestartet wird. |
|
SetCompressedStack | Veraltet. Übernimmt einen erfassten CompressedStack für den aktuellen Thread. |
|
SetData | Legt die Daten im angegebenen Slot auf den derzeit ausgeführten Thread und für die aktuelle Domäne des betreffenden Threads fest. Eine höhere Leistung erzielen Sie, wenn Sie stattdessen Felder verwenden, die mit dem ThreadStaticAttribute-Attribut markiert sind. |
|
SetProcessorAffinity | Legt in .NET Compact Framework für Xbox 360 die Prozessoraffinität für einen verwalteten Thread fest. Die Prozessoraffinität bestimmt die Prozessoren, auf denen ein Thread ausgeführt wird. |
|
Sleep(Int32) | Hält den aktuellen Thread für einen angegebenen Zeitraum an. |
|
Sleep(TimeSpan) | Blockiert den aktuellen Thread für einen angegebenen Zeitraum. |
|
SpinWait | Veranlasst, dass ein Thread so oft wartet, wie vom iterations-Parameter definiert. |
|
Start() | Weist das Betriebssystem an, den Zustand der aktuellen Instanz in ThreadState.Running zu ändern. |
|
Start(Object) | Bewirkt, dass das Betriebssystem den Zustand der aktuellen Instanz in ThreadState.Running ändert, und stellt optional ein Objekt mit Daten bereit, die von der vom Thread ausgeführten Methode verwendet werden sollen. |
|
Suspend | Veraltet. Hält den Thread an. Hat keine Auswirkungen, wenn der Thread bereits angehalten ist. |
|
ToString | Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.) |
|
TrySetApartmentState | Legt den Apartmentzustand eines Threads fest, bevor dieser gestartet wird. |
|
VolatileRead(Byte) | Liest den Wert eines Felds. Der Wert entspricht dem letzten von einem Prozessor in dem Computer geschriebenen Wert, unabhängig von der Anzahl der Prozessoren und dem Zustand des Prozessorcaches. |
|
VolatileRead(Double) | Liest den Wert eines Felds. Der Wert entspricht dem letzten von einem Prozessor in dem Computer geschriebenen Wert, unabhängig von der Anzahl der Prozessoren und dem Zustand des Prozessorcaches. |
|
VolatileRead(Int16) | Liest den Wert eines Felds. Der Wert entspricht dem letzten von einem Prozessor in dem Computer geschriebenen Wert, unabhängig von der Anzahl der Prozessoren und dem Zustand des Prozessorcaches. |
|
VolatileRead(Int32) | Liest den Wert eines Felds. Der Wert entspricht dem letzten von einem Prozessor in dem Computer geschriebenen Wert, unabhängig von der Anzahl der Prozessoren und dem Zustand des Prozessorcaches. |
|
VolatileRead(Int64) | Liest den Wert eines Felds. Der Wert entspricht dem letzten von einem Prozessor in dem Computer geschriebenen Wert, unabhängig von der Anzahl der Prozessoren und dem Zustand des Prozessorcaches. |
|
VolatileRead(IntPtr) | Liest den Wert eines Felds. Der Wert entspricht dem letzten von einem Prozessor in dem Computer geschriebenen Wert, unabhängig von der Anzahl der Prozessoren und dem Zustand des Prozessorcaches. |
|
VolatileRead(Object) | Liest den Wert eines Felds. Der Wert entspricht dem letzten von einem Prozessor in dem Computer geschriebenen Wert, unabhängig von der Anzahl der Prozessoren und dem Zustand des Prozessorcaches. |
|
VolatileRead(SByte) | Liest den Wert eines Felds. Der Wert entspricht dem letzten von einem Prozessor in dem Computer geschriebenen Wert, unabhängig von der Anzahl der Prozessoren und dem Zustand des Prozessorcaches. |
|
VolatileRead(Single) | Liest den Wert eines Felds. Der Wert entspricht dem letzten von einem Prozessor in dem Computer geschriebenen Wert, unabhängig von der Anzahl der Prozessoren und dem Zustand des Prozessorcaches. |
|
VolatileRead(UInt16) | Liest den Wert eines Felds. Der Wert entspricht dem letzten von einem Prozessor in dem Computer geschriebenen Wert, unabhängig von der Anzahl der Prozessoren und dem Zustand des Prozessorcaches. |
|
VolatileRead(UInt32) | Liest den Wert eines Felds. Der Wert entspricht dem letzten von einem Prozessor in dem Computer geschriebenen Wert, unabhängig von der Anzahl der Prozessoren und dem Zustand des Prozessorcaches. |
|
VolatileRead(UInt64) | Liest den Wert eines Felds. Der Wert entspricht dem letzten von einem Prozessor in dem Computer geschriebenen Wert, unabhängig von der Anzahl der Prozessoren und dem Zustand des Prozessorcaches. |
|
VolatileRead(UIntPtr) | Liest den Wert eines Felds. Der Wert entspricht dem letzten von einem Prozessor in dem Computer geschriebenen Wert, unabhängig von der Anzahl der Prozessoren und dem Zustand des Prozessorcaches. |
|
VolatileWrite(Byte, Byte) | Schreibt einen Wert sofort in ein Feld, sodass der Wert für alle Prozessoren des Computers sichtbar ist. |
|
VolatileWrite(Double, Double) | Schreibt einen Wert sofort in ein Feld, sodass der Wert für alle Prozessoren des Computers sichtbar ist. |
|
VolatileWrite(Int16, Int16) | Schreibt einen Wert sofort in ein Feld, sodass der Wert für alle Prozessoren des Computers sichtbar ist. |
|
VolatileWrite(Int32, Int32) | Schreibt einen Wert sofort in ein Feld, sodass der Wert für alle Prozessoren des Computers sichtbar ist. |
|
VolatileWrite(Int64, Int64) | Schreibt einen Wert sofort in ein Feld, sodass der Wert für alle Prozessoren des Computers sichtbar ist. |
|
VolatileWrite(IntPtr, IntPtr) | Schreibt einen Wert sofort in ein Feld, sodass der Wert für alle Prozessoren des Computers sichtbar ist. |
|
VolatileWrite(Object, Object) | Schreibt einen Wert sofort in ein Feld, sodass der Wert für alle Prozessoren des Computers sichtbar ist. |
|
VolatileWrite(SByte, SByte) | Schreibt einen Wert sofort in ein Feld, sodass der Wert für alle Prozessoren des Computers sichtbar ist. |
|
VolatileWrite(Single, Single) | Schreibt einen Wert sofort in ein Feld, sodass der Wert für alle Prozessoren des Computers sichtbar ist. |
|
VolatileWrite(UInt16, UInt16) | Schreibt einen Wert sofort in ein Feld, sodass der Wert für alle Prozessoren des Computers sichtbar ist. |
|
VolatileWrite(UInt32, UInt32) | Schreibt einen Wert sofort in ein Feld, sodass der Wert für alle Prozessoren des Computers sichtbar ist. |
|
VolatileWrite(UInt64, UInt64) | Schreibt einen Wert sofort in ein Feld, sodass der Wert für alle Prozessoren des Computers sichtbar ist. |
|
VolatileWrite(UIntPtr, UIntPtr) | Schreibt einen Wert sofort in ein Feld, sodass der Wert für alle Prozessoren des Computers sichtbar ist. |
|
Yield | Bewirkt, dass der aufrufende Thread die Ausführung an einen anderen Thread übergibt, der auf dem aktuellen Prozessor ausgeführt werden kann. Das Betriebssystem wählt den Thread für die Übergabe aus. |
| Name | Beschreibung | |
|---|---|---|
|
_Thread.GetIDsOfNames | Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu. |
|
_Thread.GetTypeInfo | Ruft die Typinformationen für ein Objekt ab, die dann zum Abrufen der Typinformationen für eine Schnittstelle verwendet werden können. |
|
_Thread.GetTypeInfoCount | Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1). |
|
_Thread.Invoke | Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit. |
Ein Prozess kann einen oder mehrere Threads erstellen, die einen Teil des ihm zugeordneten Programmcodes ausführen. Geben Sie mithilfe eines ThreadStart-Delegaten oder des ParameterizedThreadStart-Delegaten den von einem Thread ausgeführten Programmcode an. Mithilfe des ParameterizedThreadStart-Delegaten können Sie Daten an die Threadprozedur übergeben.
Für die Dauer seines Bestehens befindet sich ein Thread immer in einem oder mehreren der Zustände, die von ThreadState definiert sind. Eine Planungsprioritätsebene kann entsprechend der Definition von ThreadPriority für einen Thread angefordert werden. Diese wird jedoch nicht unbedingt vom Betriebssystem eingehalten.
GetHashCode stellt Identifikation für verwaltete Threads bereit. Diese Threadidentifikation gerät während der gesamten Lebensdauer des betreffenden Threads niemals mit dem Wert eines anderen Threads in Konflikt, unabhängig von der Anwendungsdomäne, aus der dieser Wert abgerufen wurde.
Hinweis
|
|---|
|
Die ThreadId eines Betriebssystems hat keine festgelegte Beziehung zu einem verwalteten Thread, da ein nicht verwalteter Host die Beziehung zwischen verwalteten und nicht verwalteten Threads steuern kann. Insbesondere kann ein hoch entwickelter Host unter Verwendung der CLR Hosting API die Ablaufplanung vieler verwalteter Threads durch denselben Betriebssystemthread ausführen oder einen verwalteten Thread zwischen verschiedenen Betriebssystemthreads verschieben. |
Es ist nicht erforderlich, einen Verweis auf ein Thread-Objekt beizubehalten, nachdem Sie den Thread gestartet haben. Der Thread wird so lange ausgeführt, bis die Threadprozedur abgeschlossen wurde.
Wichtig
|
|---|
|
Ab .NET Framework, Version 4 ist das Verhalten einiger Theadkonstruktoren geändert: Nur voll vertrauenswürdiger Code die maximale Stapelgröße auf einen Wert festlegen, der größer als die Standardstapelgröße (1 Megabyte) ist. Wenn ein größerer Wert angegeben wird und Code mit teilweiser Vertrauenswürdigkeit ausgeführt wird, wird der größere Wert ignoriert, und die Standardstapelgröße wird verwendet. Es wird keine Ausnahme ausgelöst. In Code auf beliebiger Vertrauensebene kann die maximale Stapelgröße auf einen Wert festgelegt werden, der kleiner als die Standardstapelgröße ist. |
Das folgende Beispiel veranschaulicht einfache Threadfunktionen.
using System; using System.Threading; // Simple threading scenario: Start a static method running // on a second thread. public class ThreadExample { // The ThreadProc method is called when the thread starts. // It loops ten times, writing to the console and yielding // the rest of its time slice each time, and then ends. public static void ThreadProc() { for (int i = 0; i < 10; i++) { Console.WriteLine("ThreadProc: {0}", i); // Yield the rest of the time slice. Thread.Sleep(0); } } public static void Main() { Console.WriteLine("Main thread: Start a second thread."); // The constructor for the Thread class requires a ThreadStart // delegate that represents the method to be executed on the // thread. C# simplifies the creation of this delegate. Thread t = new Thread(new ThreadStart(ThreadProc)); // Start ThreadProc. Note that on a uniprocessor, the new // thread does not get any processor time until the main thread // is preempted or yields. Uncomment the Thread.Sleep that // follows t.Start() to see the difference. t.Start(); //Thread.Sleep(0); for (int i = 0; i < 4; i++) { Console.WriteLine("Main thread: Do some work."); Thread.Sleep(0); } Console.WriteLine("Main thread: Call Join(), to wait until ThreadProc ends."); t.Join(); Console.WriteLine("Main thread: ThreadProc.Join has returned. Press Enter to end program."); Console.ReadLine(); } }
Durch diesen Code wird eine mit folgendem Beispiel vergleichbare Ausgabe generiert:
[VB, C++, C#] Main thread: Start a second thread. Main thread: Do some work. ThreadProc: 0 Main thread: Do some work. ThreadProc: 1 Main thread: Do some work. ThreadProc: 2 Main thread: Do some work. ThreadProc: 3 Main thread: Call Join(), to wait until ThreadProc ends. ThreadProc: 4 ThreadProc: 5 ThreadProc: 6 ThreadProc: 7 ThreadProc: 8 ThreadProc: 9 Main thread: ThreadProc.Join has returned. Press Enter to end program.
Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Hinweis
Wichtig