ThreadPool.UnsafeQueueUserWorkItem Метод

Определение

Перегрузки

Имя Описание
UnsafeQueueUserWorkItem(IThreadPoolWorkItem, Boolean)

Очередь указанного объекта рабочего элемента в пул потоков.

UnsafeQueueUserWorkItem(WaitCallback, Object)

Очередь указанного делегата в пул потоков, но не распространяет стек вызовов в рабочий поток.

UnsafeQueueUserWorkItem<TState>(Action<TState>, TState, Boolean)

Очереди метода, указанного делегатом Action<T> для выполнения, и указывает объект, содержащий данные, используемые методом. Метод выполняется, когда поток пула потоков становится доступным.

UnsafeQueueUserWorkItem(IThreadPoolWorkItem, Boolean)

Исходный код:
ThreadPoolWorkQueue.cs
Исходный код:
ThreadPoolWorkQueue.cs
Исходный код:
ThreadPoolWorkQueue.cs
Исходный код:
ThreadPoolWorkQueue.cs
Исходный код:
ThreadPoolWorkQueue.cs

Очередь указанного объекта рабочего элемента в пул потоков.

public:
 static bool UnsafeQueueUserWorkItem(System::Threading::IThreadPoolWorkItem ^ callBack, bool preferLocal);
public static bool UnsafeQueueUserWorkItem(System.Threading.IThreadPoolWorkItem callBack, bool preferLocal);
static member UnsafeQueueUserWorkItem : System.Threading.IThreadPoolWorkItem * bool -> bool
Public Shared Function UnsafeQueueUserWorkItem (callBack As IThreadPoolWorkItem, preferLocal As Boolean) As Boolean

Параметры

callBack
IThreadPoolWorkItem

Рабочий элемент, вызывающий, когда поток в пуле потоков выбирает рабочий элемент.

preferLocal
Boolean

true , чтобы предпочесть очередь рабочего элемента в очереди, близкой к текущему потоку; false чтобы предпочесть очередь рабочего элемента в общую очередь пула потоков.

Возвращаемое значение

true Значение , если метод выполнен успешно; OutOfMemoryException вызывается, если рабочий элемент не может быть помещен в очередь.

Исключения

callBack равно null.

Рабочий Taskэлемент — это .

Рабочий элемент не может быть помещен в очередь.

Комментарии

Пул потоков вызовет метод рабочего элемента Execute() . Это ответственность за распространение рабочего элемента ExecutionContext , если это необходимо, пул потоков не будет делать этого.

Применяется к

UnsafeQueueUserWorkItem(WaitCallback, Object)

Исходный код:
ThreadPoolWorkQueue.cs
Исходный код:
ThreadPoolWorkQueue.cs
Исходный код:
ThreadPoolWorkQueue.cs
Исходный код:
ThreadPoolWorkQueue.cs
Исходный код:
ThreadPoolWorkQueue.cs

Очередь указанного делегата в пул потоков, но не распространяет стек вызовов в рабочий поток.

public:
 static bool UnsafeQueueUserWorkItem(System::Threading::WaitCallback ^ callBack, System::Object ^ state);
public static bool UnsafeQueueUserWorkItem(System.Threading.WaitCallback callBack, object? state);
public static bool UnsafeQueueUserWorkItem(System.Threading.WaitCallback callBack, object state);
[System.Security.SecurityCritical]
public static bool UnsafeQueueUserWorkItem(System.Threading.WaitCallback callBack, object state);
static member UnsafeQueueUserWorkItem : System.Threading.WaitCallback * obj -> bool
[<System.Security.SecurityCritical>]
static member UnsafeQueueUserWorkItem : System.Threading.WaitCallback * obj -> bool
Public Shared Function UnsafeQueueUserWorkItem (callBack As WaitCallback, state As Object) As Boolean

Параметры

callBack
WaitCallback

Объект WaitCallback , представляющий делегат для вызова, когда поток в пуле потоков выбирает рабочий элемент.

state
Object

Объект, передаваемый делегату при обслуживании из пула потоков.

Возвращаемое значение

true Значение , если метод выполнен успешно; OutOfMemoryException вызывается, если рабочий элемент не может быть помещен в очередь.

Атрибуты

Исключения

Вызывающий объект не имеет требуемого разрешения.

Обнаружена внепаметная ситуация.

Рабочий элемент не может быть помещен в очередь.

callBack равно null.

Комментарии

QueueUserWorkItem В отличие от метода, UnsafeQueueUserWorkItem не распространяет вызов стек на рабочий поток. Это позволяет коду потерять стек вызовов и тем самым повысить привилегии безопасности.

Предостережение

Использование UnsafeQueueUserWorkItem может непреднамеренно открыть отверстие безопасности. Безопасность доступа к коду позволяет проверить разрешения всех вызывающих объектов в стеке. Если работа выполняется в очереди в поток пула потоков с помощью, UnsafeQueueUserWorkItemстек потока пула потоков не будет иметь контекст фактических вызывающих объектов. Вредоносный код может использовать этот код, чтобы избежать проверок разрешений.

См. также раздел

Применяется к

UnsafeQueueUserWorkItem<TState>(Action<TState>, TState, Boolean)

Исходный код:
ThreadPoolWorkQueue.cs
Исходный код:
ThreadPoolWorkQueue.cs
Исходный код:
ThreadPoolWorkQueue.cs
Исходный код:
ThreadPoolWorkQueue.cs
Исходный код:
ThreadPoolWorkQueue.cs

Очереди метода, указанного делегатом Action<T> для выполнения, и указывает объект, содержащий данные, используемые методом. Метод выполняется, когда поток пула потоков становится доступным.

public:
generic <typename TState>
 static bool UnsafeQueueUserWorkItem(Action<TState> ^ callBack, TState state, bool preferLocal);
public static bool UnsafeQueueUserWorkItem<TState>(Action<TState> callBack, TState state, bool preferLocal);
static member UnsafeQueueUserWorkItem : Action<'State> * 'State * bool -> bool
Public Shared Function UnsafeQueueUserWorkItem(Of TState) (callBack As Action(Of TState), state As TState, preferLocal As Boolean) As Boolean

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

TState

Тип элементов state.

Параметры

callBack
Action<TState>

Делегат, представляющий метод для выполнения.

state
TState

Объект, содержащий данные, используемые методом.

preferLocal
Boolean

true , чтобы предпочесть очередь рабочего элемента в очереди, близкой к текущему потоку; false чтобы предпочесть очередь рабочего элемента в общую очередь пула потоков.

Возвращаемое значение

true Значение , если метод успешно поставлен в очередь; NotSupportedException вызывается, если рабочий элемент не может быть помещен в очередь.

Исключения

callBack равно null.

Рабочий элемент не может быть помещен в очередь.

Применяется к