Данная статья переведена с помощью средств машинного перевода. Чтобы просмотреть ее на английском языке, установите флажок Английский. Вы также можете просматривать английский текст во всплывающем окне, наводя указатель мыши на переведенный текст.
Перевод
Английский

Класс ThreadLocal<T>

 

Опубликовано: Июль 2016

Предоставляет хранилище для данных, локальных для потока.

Пространство имен:   System.Threading
Сборка:  mscorlib (в mscorlib.dll)

System.Object
  System.Threading.ThreadLocal<T>

[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true, 
	ExternalThreading = true)]
public class ThreadLocal<T> : IDisposable

Параметры типа

T

Указывает тип данных, хранящихся на поток.

ИмяОписание
System_CAPS_pubmethodThreadLocal<T>()

Инициализирует экземпляр ThreadLocal<T>.

System_CAPS_pubmethodThreadLocal<T>(Boolean)

Инициализирует ThreadLocal<T> экземпляр и указывает, доступны ли все значения из любого потока.

System_CAPS_pubmethodThreadLocal<T>(Func<T>)

Инициализирует ThreadLocal<T> экземпляр с заданным valueFactory функции.

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

Инициализирует ThreadLocal<T> экземпляр с заданным valueFactory функции и флаг, указывающий, является ли все значения доступны из любого потока.

ИмяОписание
System_CAPS_pubpropertyIsValueCreated

Получает ли Value инициализирован в текущем потоке.

System_CAPS_pubpropertyValue

Возвращает или задает значение данного экземпляра для текущего потока.

System_CAPS_pubpropertyValues

Возвращает список всех значений, хранящихся в настоящее время для всех потоков, которые обращались к данного экземпляра.

ИмяОписание
System_CAPS_pubmethodDispose()

Освобождает все ресурсы, используемые текущим экземпляром класса ThreadLocal<T>.

System_CAPS_protmethodDispose(Boolean)

Освобождает ресурсы, используемые ThreadLocal<T> экземпляра.

System_CAPS_pubmethodEquals(Object)

Определяет, равен ли заданный объект текущему объекту.(Наследуется от Object.)

System_CAPS_protmethodFinalize()

Освобождает ресурсы, используемые ThreadLocal<T> экземпляра.(Переопределяет Object.Finalize().)

System_CAPS_pubmethodGetHashCode()

Служит хэш-функцией по умолчанию.(Наследуется от Object.)

System_CAPS_pubmethodGetType()

Возвращает объект Type для текущего экземпляра.(Наследуется от Object.)

System_CAPS_protmethodMemberwiseClone()

Создает неполную копию текущего объекта Object.(Наследуется от Object.)

System_CAPS_pubmethodToString()

Создает и возвращает строковое представление данного экземпляра для текущего потока.(Переопределяет Object.ToString().)

The following example shows how to use T:System.Threading.ThreadLocal`1:

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();
        }
}

Универсальная платформа Windows
Доступно с 8
.NET Framework
Доступно с 4.0
Переносимая библиотека классов
Поддерживается в: переносимые платформы .NET
Windows Phone Silverlight
Доступно с 8.0
Windows Phone
Доступно с 8.1

With the exception of M:System.Threading.ThreadLocal`1.Dispose, all public and protected members of T:System.Threading.ThreadLocal`1 are thread-safe and may be used concurrently from multiple threads. The value returned for the P:System.Threading.ThreadLocal`1.Value and P:System.Threading.ThreadLocal`1.IsValueCreated properties is specific for the thread on which the property is accessed.

Вернуться в начало
Показ: