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.
Рабочий элемент не может быть помещен в очередь.