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
Помещает указанный объект рабочего элемента в очередь в пул потоков.
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
Помещает указанный делегат в очередь пула потоков, но не распространяет вызывающий стек на рабочий поток.
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
Помещает метод, определенный делегатом 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
.
Не удается поместить в очередь рабочий элемент.