ThreadPool.UnsafeQueueUserWorkItem 方法

定义

重载

UnsafeQueueUserWorkItem(IThreadPoolWorkItem, Boolean)

将指定的工作项对象排队到线程池。

UnsafeQueueUserWorkItem(WaitCallback, Object)

将指定的委托排队到线程池,但不会将调用堆栈传播到辅助线程。

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

Action<T> 委托指定的方法排入队列以便执行,并指定包含该方法使用的数据的对象。 此方法在有线程池线程变得可用时执行。

UnsafeQueueUserWorkItem(IThreadPoolWorkItem, Boolean)

将指定的工作项对象排队到线程池。

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 则表示首选将工作项排队到线程池的共享队列中。

返回

Boolean

如果方法成功,则为 true;如果未能将该工作项排队,则引发 OutOfMemoryException

例外

callback 上声明的默认值为 null

该工作项是一个 Task

未能将该工作项排队。

注解

线程池将调用工作项 Execute() 的方法。 如果需要,则由该工作项负责传播 ExecutionContext ;线程池将不这样做。

适用于

UnsafeQueueUserWorkItem(WaitCallback, Object)

将指定的委托排队到线程池,但不会将调用堆栈传播到辅助线程。

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

在接受线程池服务时传递给委托的对象。

返回

Boolean

如果方法成功,则为 true;如果未能将该工作项排队,则引发 OutOfMemoryException

属性

例外

调用方没有所要求的权限。

遇到了内存不足的情况。

未能将该工作项排队。

callBack 上声明的默认值为 null

注解

QueueUserWorkItem与方法不同,UnsafeQueueUserWorkItem不会将调用堆栈传播到工作线程。 这允许代码丢失调用堆栈,从而提升其安全特权。

注意

使用 UnsafeQueueUserWorkItem 可能会无意中打开安全漏洞。 代码访问安全基于其权限检查堆栈上所有调用方的权限。 当使用线程池线程 UnsafeQueueUserWorkItem上的工作排队时,线程池线程的堆栈将没有实际调用方的上下文。 恶意代码可能会利用此漏洞来避免权限检查。

另请参阅

适用于

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

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 则表示首选将工作项排队到线程池的共享队列中。

返回

Boolean

如果此方法成功排队,则为 true;如果无法将该工作项排队,则引发 NotSupportedException

例外

callback 上声明的默认值为 null

未能将该工作项排队。

适用于