ThreadPool.UnsafeQueueUserWorkItem ThreadPool.UnsafeQueueUserWorkItem ThreadPool.UnsafeQueueUserWorkItem ThreadPool.UnsafeQueueUserWorkItem Method

Definición

Sobrecargas

UnsafeQueueUserWorkItem(IThreadPoolWorkItem, Boolean) UnsafeQueueUserWorkItem(IThreadPoolWorkItem, Boolean) UnsafeQueueUserWorkItem(IThreadPoolWorkItem, Boolean) UnsafeQueueUserWorkItem(IThreadPoolWorkItem, Boolean)

Pone en cola el objeto del elemento de trabajo especificado en el grupo de subprocesos.Queues the specified work item object to the thread pool.

UnsafeQueueUserWorkItem(WaitCallback, Object) UnsafeQueueUserWorkItem(WaitCallback, Object) UnsafeQueueUserWorkItem(WaitCallback, Object) 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.Queues the specified delegate to the thread pool, but does not propagate the calling stack to the worker thread.

UnsafeQueueUserWorkItem<TState>(Action<TState>, TState, Boolean) UnsafeQueueUserWorkItem<TState>(Action<TState>, TState, Boolean) UnsafeQueueUserWorkItem<TState>(Action<TState>, TState, Boolean) 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.Queues a method specified by an Action<T> delegate for execution, and specifies an object containing data to be used by the method. El método se ejecuta cuando hay disponible un subproceso de grupo de subprocesos.The method executes when a thread pool thread becomes available.

UnsafeQueueUserWorkItem(IThreadPoolWorkItem, Boolean) UnsafeQueueUserWorkItem(IThreadPoolWorkItem, Boolean) UnsafeQueueUserWorkItem(IThreadPoolWorkItem, Boolean) UnsafeQueueUserWorkItem(IThreadPoolWorkItem, Boolean)

Pone en cola el objeto del elemento de trabajo especificado en el grupo de subprocesos.Queues the specified work item object to the thread pool.

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 IThreadPoolWorkItem IThreadPoolWorkItem IThreadPoolWorkItem

Elemento de trabajo que se va a invocar cuando un subproceso del grupo de subprocesos elige el elemento de trabajo.The work item to invoke when a thread in the thread pool picks up the work item.

preferLocal
Boolean Boolean Boolean 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.true to prefer queueing the work item in a queue close to the current thread; false to prefer queueing the work item to the thread pool's shared queue.

Devoluciones

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.true if the method succeeds; OutOfMemoryException is thrown if the work item could not be queued.

Excepciones

No se pudo poner en la cola el elemento de trabajo.The work item could not be queued.

Comentarios

El grupo de subprocesos invocará el Execute() método del elemento de trabajo.The thread pool will invoke the work item's Execute() method. Es responsabilidad del elemento de trabajo propagarse ExecutionContext si es necesario; el grupo de subprocesos no lo hará.It is the responsibility of that work item to propagate ExecutionContext if it's needed; the thread pool will not do so.

UnsafeQueueUserWorkItem(WaitCallback, Object) UnsafeQueueUserWorkItem(WaitCallback, Object) UnsafeQueueUserWorkItem(WaitCallback, Object) 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.Queues the specified delegate to the thread pool, but does not propagate the calling stack to the worker thread.

public:
 static bool UnsafeQueueUserWorkItem(System::Threading::WaitCallback ^ callBack, System::Object ^ state);
[System.Security.SecurityCritical]
public static bool UnsafeQueueUserWorkItem (System.Threading.WaitCallback callBack, object state);
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 WaitCallback WaitCallback

WaitCallback que representa el delegado al que se va a invocar cuando un subproceso del grupo de subprocesos seleccione el elemento de trabajo.A WaitCallback that represents the delegate to invoke when a thread in the thread pool picks up the work item.

state
Object Object Object Object

Objeto que se pasa al delegado cuando se atiende desde el grupo de subprocesos.The object that is passed to the delegate when serviced from the thread pool.

Devoluciones

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.true if the method succeeds; OutOfMemoryException is thrown if the work item could not be queued.

Excepciones

El llamador no dispone del permiso requerido.The caller does not have the required permission.

Se ha encontrado una condición de falta de memoria.An out-of-memory condition was encountered.

No se pudo poner en la cola el elemento de trabajo.The work item could not be queued.

Comentarios

A diferencia del QueueUserWorkItem método, UnsafeQueueUserWorkItem no propaga la pila de llamadas al subproceso de trabajo.Unlike the QueueUserWorkItem method, UnsafeQueueUserWorkItem does not propagate the calling stack to the worker thread. Esto permite que el código pierda la pila de llamadas y, por lo tanto, eleve sus privilegios de seguridad.This allows code to lose the calling stack and thereby to elevate its security privileges.

Precaución

El UnsafeQueueUserWorkItem uso de podría abrir accidentalmente un agujero de seguridad.Using UnsafeQueueUserWorkItem could inadvertently open up a security hole. La seguridad de acceso del código basa sus comprobaciones de permiso en los permisos de todos los llamadores de la pila.Code access security bases its permission checks on the permissions of all the callers on the stack. Cuando el trabajo se pone en cola en un subproceso UnsafeQueueUserWorkItemdel grupo de subprocesos mediante, la pila del subproceso del grupo de subprocesos no tendrá el contexto de los autores de llamadas reales.When work is queued on a thread pool thread using UnsafeQueueUserWorkItem, the stack of the thread pool thread will not have the context of the actual callers. Es posible que el código malintencionado pueda aprovechar esto para evitar comprobaciones de permisos.Malicious code might be able exploit this to avoid permission checks.

Seguridad

SecurityCriticalAttribute
Requiere plena confianza para el llamador inmediato.Requires full trust for the immediate caller. Este miembro no puede ser utilizado por código transparente o de confianza parcial.This member cannot be used by partially trusted or transparent code.

Consulte también:

UnsafeQueueUserWorkItem<TState>(Action<TState>, TState, Boolean) UnsafeQueueUserWorkItem<TState>(Action<TState>, TState, Boolean) UnsafeQueueUserWorkItem<TState>(Action<TState>, TState, Boolean) 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.Queues a method specified by an Action<T> delegate for execution, and specifies an object containing data to be used by the method. El método se ejecuta cuando hay disponible un subproceso de grupo de subprocesos.The method executes when a thread pool thread becomes available.

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.The type of elements of state.

Parámetros

callBack
Action<TState>

Un delegado que representa el método que se va a ejecutar.A delegate representing the method to execute.

state

Objeto que contiene los datos que va a usar el método.An object containing data to be used by the method.

preferLocal
Boolean Boolean Boolean 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.true to prefer queueing the work item in a queue close to the current thread; false to prefer queueing the work item to the thread pool's shared queue.

Devoluciones

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.true if the method is successfully queued; NotSupportedException is thrown if the work item could not be queued.

Excepciones

No se pudo poner en la cola el elemento de trabajo.The work item could not be queued.

Se aplica a