ThreadPool.UnsafeQueueUserWorkItem 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
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
则表示首选将工作项排队到线程池的共享队列中。
返回
如果方法成功,则为 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
在接受线程池服务时传递给委托的对象。
返回
如果方法成功,则为 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
则表示首选将工作项排队到线程池的共享队列中。
返回
如果此方法成功排队,则为 true
;如果无法将该工作项排队,则引发 NotSupportedException。
例外
callback
上声明的默认值为 null
。
未能将该工作项排队。