ThreadLocal<T> ThreadLocal<T> ThreadLocal<T> ThreadLocal<T> Class

Definition

Stellt Thread-lokalen Datenspeicher bereit.Provides thread-local storage of data.

generic <typename T>
public ref class ThreadLocal : IDisposable
public class ThreadLocal<T> : IDisposable
type ThreadLocal<'T> = class
    interface IDisposable
Public Class ThreadLocal(Of T)
Implements IDisposable

Typparameter

T

Gibt den gespeicherten Datentyp pro Thread an.Specifies the type of data stored per-thread.

Vererbung
ThreadLocal<T>ThreadLocal<T>ThreadLocal<T>ThreadLocal<T>
Implementiert

Beispiele

Das folgende Beispiel veranschaulicht die Verwendung von ThreadLocal<T>:The following example shows how to use ThreadLocal<T>:

using System;
using System.Threading;
using System.Threading.Tasks;

class ThreadLocalDemo
{
    
        // Demonstrates:
        //      ThreadLocal(T) constructor
        //      ThreadLocal(T).Value
        //      One usage of ThreadLocal(T)
        static void Main()
        {
            // Thread-Local variable that yields a name for a thread
            ThreadLocal<string> ThreadName = new ThreadLocal<string>(() =>
            {
                return "Thread" + Thread.CurrentThread.ManagedThreadId;
            });

            // Action that prints out ThreadName for the current thread
            Action action = () =>
            {
                // If ThreadName.IsValueCreated is true, it means that we are not the
                // first action to run on this thread.
                bool repeat = ThreadName.IsValueCreated;

                Console.WriteLine("ThreadName = {0} {1}", ThreadName.Value, repeat ? "(repeat)" : "");
            };

            // Launch eight of them.  On 4 cores or less, you should see some repeat ThreadNames
            Parallel.Invoke(action, action, action, action, action, action, action, action);

            // Dispose when you are done
            ThreadName.Dispose();
        }
}

Imports System.Threading
Imports System.Threading.Tasks

Module ThreadLocalDemo

    ' Demonstrates:
    ' ThreadLocal(T) constructor
    ' ThreadLocal(T).Value
    ' One usage of ThreadLocal(T)
    Sub Main()
        ' Thread-Local variable that yields a name for a thread
        Dim ThreadName As New ThreadLocal(Of String)(
            Function()
                Return "Thread" & Thread.CurrentThread.ManagedThreadId
            End Function)

        ' Action that prints out ThreadName for the current thread
        Dim action As Action =
            Sub()
                ' If ThreadName.IsValueCreated is true, it means that we are not the
                ' first action to run on this thread.
                Dim repeat As Boolean = ThreadName.IsValueCreated

                Console.WriteLine("ThreadName = {0} {1}", ThreadName.Value, If(repeat, "(repeat)", ""))
            End Sub

        ' Launch eight of them. On 4 cores or less, you should see some repeat ThreadNames
        Parallel.Invoke(action, action, action, action, action, action, action, action)

        ' Dispose when you are done
        ThreadName.Dispose()
    End Sub
End Module

Konstruktoren

ThreadLocal<T>() ThreadLocal<T>() ThreadLocal<T>() ThreadLocal<T>()

Initialisiert die ThreadLocal<T>-Instanz.Initializes the ThreadLocal<T> instance.

ThreadLocal<T>(Boolean) ThreadLocal<T>(Boolean) ThreadLocal<T>(Boolean) ThreadLocal<T>(Boolean)

Initialisiert die ThreadLocal<T>-Instanz und gibt an, ob alle Werte von jedem Thread aus zugänglich sind.Initializes the ThreadLocal<T> instance and specifies whether all values are accessible from any thread.

ThreadLocal<T>(Func<T>) ThreadLocal<T>(Func<T>) ThreadLocal<T>(Func<T>) ThreadLocal<T>(Func<T>)

Initialisiert die ThreadLocal<T>-Instanz mit der angegebenen valueFactory-Funktion.Initializes the ThreadLocal<T> instance with the specified valueFactory function.

ThreadLocal<T>(Func<T>, Boolean) ThreadLocal<T>(Func<T>, Boolean) ThreadLocal<T>(Func<T>, Boolean) ThreadLocal<T>(Func<T>, Boolean)

Initialisiert die ThreadLocal<T>-Instanz mit der angegebenen valueFactory-Funktion und einem Flag, das angibt, ob alle Werte von jedem Thread aus zugänglich sind.Initializes the ThreadLocal<T> instance with the specified valueFactory function and a flag that indicates whether all values are accessible from any thread.

Eigenschaften

IsValueCreated IsValueCreated IsValueCreated IsValueCreated

Ruft einen Wert ab, der angibt, ob Value für den aktuellen Thread initialisiert wurde.Gets whether Value is initialized on the current thread.

Value Value Value Value

Ruft den Wert dieser Instanz für den aktuellen Thread ab oder legt ihn fest.Gets or sets the value of this instance for the current thread.

Values Values Values Values

Ruft eine Liste aller Werte ab, die aktuell von allen Threads, die auf diese Instanz zugegriffen haben, gespeichert werden.Gets a list for all of the values currently stored by all of the threads that have accessed this instance.

Methoden

Dispose() Dispose() Dispose() Dispose()

Gibt alle von der aktuellen Instanz der ThreadLocal<T>-Klasse verwendeten Ressourcen frei.Releases all resources used by the current instance of the ThreadLocal<T> class.

Dispose(Boolean) Dispose(Boolean) Dispose(Boolean) Dispose(Boolean)

Gibt die von dieser ThreadLocal<T>-Instanz verwendeten Ressourcen frei.Releases the resources used by this ThreadLocal<T> instance.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.Determines whether the specified object is equal to the current object.

(Inherited from Object)
Finalize() Finalize() Finalize() Finalize()

Gibt die von dieser ThreadLocal<T>-Instanz verwendeten Ressourcen frei.Releases the resources used by this ThreadLocal<T> instance.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Fungiert als die Standardhashfunktion.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Erstellt eine Zeichenfolgendarstellung dieser Instanz für den aktuellen Thread und gibt sie zurück.Creates and returns a string representation of this instance for the current thread.

Gilt für:

Threadsicherheit

Mit Ausnahme von Dispose()sind alle öffentlichen und geschützten Member von ThreadLocal<T> sind threadsicher und können von mehreren Threads gleichzeitig verwendet werden.With the exception of Dispose(), all public and protected members of ThreadLocal<T> are thread-safe and may be used concurrently from multiple threads. Der Rückgabewert für die Value und IsValueCreated Eigenschaften ist spezifisch für den Thread, der auf dem die Eigenschaft zugegriffen wird.The value returned for the Value and IsValueCreated properties is specific for the thread on which the property is accessed.

Siehe auch