ThreadPool.UnsafeQueueUserWorkItem Método

Definición

Sobrecargas

UnsafeQueueUserWorkItem(IThreadPoolWorkItem, Boolean)

Pone en cola el objeto del elemento de trabajo especificado en el grupo de subprocesos.

UnsafeQueueUserWorkItem(WaitCallback, Object)

Pone en cola el delegado especificado en el grupo de subprocesos, pero no propaga la pila de llamadas al subproceso de trabajo.

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

Pone un método en cola para su ejecución especificado por un delegado de Action<T> y especifica un objeto que contiene los datos que debe usar el método. El método se ejecuta cuando hay disponible un subproceso de grupo de subprocesos.

UnsafeQueueUserWorkItem(IThreadPoolWorkItem, Boolean)

Pone en cola el objeto del elemento de trabajo especificado en el grupo de subprocesos.

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

Parámetros

callBack
IThreadPoolWorkItem

Elemento de trabajo que se va a invocar cuando un subproceso del grupo de subprocesos elige el elemento de trabajo.

preferLocal
Boolean

true si se prefiere poner en cola el elemento de trabajo en una cola junto al subproceso actual; false si se prefiere poner en cola el elemento de trabajo en la cola compartida del grupo de subprocesos.

Devoluciones

Boolean

true si el método se ejecuta correctamente; se produce la excepción OutOfMemoryException si el elemento de trabajo no se puede poner en la cola.

Excepciones

callback es null.

El elemento de trabajo es Task.

No se pudo poner en la cola el elemento de trabajo.

Comentarios

El grupo de subprocesos invocará el método del elemento de Execute() trabajo. Es responsabilidad de ese elemento de trabajo propagarse ExecutionContext si es necesario; el grupo de subprocesos no lo hará.

Se aplica a

UnsafeQueueUserWorkItem(WaitCallback, Object)

Pone en cola el delegado especificado en el grupo de subprocesos, pero no propaga la pila de llamadas al subproceso de trabajo.

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

Parámetros

callBack
WaitCallback

WaitCallback que representa el delegado al que se va a invocar cuando un subproceso del grupo de subprocesos seleccione el elemento de trabajo.

state
Object

Objeto que se pasa al delegado cuando se atiende desde el grupo de subprocesos.

Devoluciones

Boolean

true si el método se ejecuta correctamente; se produce la excepción OutOfMemoryException si el elemento de trabajo no se puede poner en la cola.

Atributos

Excepciones

El llamador no dispone del permiso requerido.

Se ha encontrado una condición de falta de memoria.

No se pudo poner en la cola el elemento de trabajo.

callBack es null.

Comentarios

A diferencia del QueueUserWorkItem método , UnsafeQueueUserWorkItem no propaga la pila de llamadas al subproceso de trabajo. Esto permite que el código pierda la pila de llamadas y, por tanto, elevar sus privilegios de seguridad.

Precaución

Usar UnsafeQueueUserWorkItem podría abrir accidentalmente un agujero de seguridad. La seguridad de acceso al código basa sus comprobaciones de permisos en los permisos de todos los llamadores de la pila. Cuando el trabajo se pone en cola en un subproceso de grupo de subprocesos mediante UnsafeQueueUserWorkItem, la pila del subproceso del grupo de subprocesos no tendrá el contexto de los autores de llamadas reales. Es posible que el código malintencionado pueda aprovechar esto para evitar comprobaciones de permisos.

Consulte también

Se aplica a

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

Pone un método en cola para su ejecución especificado por un delegado de Action<T> y especifica un objeto que contiene los datos que debe usar el método. El método se ejecuta cuando hay disponible un subproceso de grupo de subprocesos.

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

Parámetros de tipo

TState

Tipo de elementos de state.

Parámetros

callBack
Action<TState>

Un delegado que representa el método que se va a ejecutar.

state
TState

Objeto que contiene los datos que va a usar el método.

preferLocal
Boolean

true si se prefiere poner en cola el elemento de trabajo en una cola junto al subproceso actual; false si se prefiere poner en cola el elemento de trabajo en la cola compartida del grupo de subprocesos.

Devoluciones

Boolean

true si el método se pone en la cola correctamente; se produce la excepción NotSupportedException si no se puede poner en la cola el elemento de trabajo.

Excepciones

callback es null.

No se pudo poner en la cola el elemento de trabajo.

Se aplica a