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

Definizione

Overload

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

Accoda l'oggetto elemento di lavoro specificato nel pool di thread.Queues the specified work item object to the thread pool.

UnsafeQueueUserWorkItem(WaitCallback, Object) UnsafeQueueUserWorkItem(WaitCallback, Object) UnsafeQueueUserWorkItem(WaitCallback, Object) UnsafeQueueUserWorkItem(WaitCallback, Object)

Accoda il delegato specificato al pool di thread, ma non propaga lo stack di chiamata nel thread di lavoro.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)

Accoda un metodo specificato da un delegato Action<T> per l'esecuzione e specifica un oggetto che contiene i dati che dovranno essere usati dal metodo.Queues a method specified by an Action<T> delegate for execution, and specifies an object containing data to be used by the method. Il metodo viene eseguito quando un thread del pool di thread diventa disponibile.The method executes when a thread pool thread becomes available.

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

Accoda l'oggetto elemento di lavoro specificato nel pool di thread.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

Parametri

callBack
IThreadPoolWorkItem IThreadPoolWorkItem IThreadPoolWorkItem IThreadPoolWorkItem

Elemento di lavoro da richiamare quando un thread nel pool di thread preleva l'elemento di lavoro.The work item to invoke when a thread in the thread pool picks up the work item.

preferLocal
Boolean Boolean Boolean Boolean

true per preferire l'accodamento dell'elemento di lavoro in una coda vicino al thread corrente; false per preferire l'accodamento dell'elemento di lavoro nella coda condivisa del pool di thread.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.

Restituisce

true se il metodo viene eseguito correttamente. Viene generata l'eccezione OutOfMemoryException se non è stato possibile accodare l'elemento di lavoro.true if the method succeeds; OutOfMemoryException is thrown if the work item could not be queued.

Eccezioni

Non è stato possibile accodare l'elemento di lavoro.The work item could not be queued.

Commenti

Il pool di thread richiamerà il metodo Execute() dell'elemento di lavoro.The thread pool will invoke the work item's Execute() method. È responsabilità dell'elemento di lavoro propagarsi ExecutionContext se è necessario; il pool di thread non eseguirà questa operazione.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)

Accoda il delegato specificato al pool di thread, ma non propaga lo stack di chiamata nel thread di lavoro.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

Parametri

callBack
WaitCallback WaitCallback WaitCallback WaitCallback

Oggetto WaitCallback che rappresenta il delegato da richiamare quando un thread nel pool di thread sceglie l'elemento di lavoro.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

Oggetto passato al delegato quando viene servito dal pool di thread.The object that is passed to the delegate when serviced from the thread pool.

Restituisce

true se il metodo viene eseguito correttamente. Viene generata l'eccezione OutOfMemoryException se non è stato possibile accodare l'elemento di lavoro.true if the method succeeds; OutOfMemoryException is thrown if the work item could not be queued.

Eccezioni

Il chiamante non dispone dell'autorizzazione richiesta.The caller does not have the required permission.

È stata rilevata una condizione di memoria insufficiente.An out-of-memory condition was encountered.

Non è stato possibile accodare l'elemento di lavoro.The work item could not be queued.

Commenti

A differenza del metodo QueueUserWorkItem, UnsafeQueueUserWorkItem non propaga lo stack di chiamate al thread di lavoro.Unlike the QueueUserWorkItem method, UnsafeQueueUserWorkItem does not propagate the calling stack to the worker thread. In questo modo il codice può perdere lo stack chiamante e quindi elevare i privilegi di sicurezza.This allows code to lose the calling stack and thereby to elevate its security privileges.

Attenzione

L'uso di UnsafeQueueUserWorkItem potrebbe inavvertitamente aprire un foro di sicurezza.Using UnsafeQueueUserWorkItem could inadvertently open up a security hole. La sicurezza dall'accesso di codice basa i controlli delle autorizzazioni sulle autorizzazioni di tutti i chiamanti nello stack.Code access security bases its permission checks on the permissions of all the callers on the stack. Quando il lavoro viene accodato in un thread del pool di thread utilizzando UnsafeQueueUserWorkItem, lo stack del thread del pool di thread non avrà il contesto dei chiamanti effettivi.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. Il codice dannoso potrebbe essere in grado di sfruttare questo comportamento per evitare controlli delle autorizzazioni.Malicious code might be able exploit this to avoid permission checks.

Sicurezza

SecurityCriticalAttribute
Richiede l'attendibilità totale per il chiamante immediato.Requires full trust for the immediate caller. Questo membro non può essere utilizzato da codice parzialmente attendibile o trasparente.This member cannot be used by partially trusted or transparent code.

Vedi anche

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

Accoda un metodo specificato da un delegato Action<T> per l'esecuzione e specifica un oggetto che contiene i dati che dovranno essere usati dal metodo.Queues a method specified by an Action<T> delegate for execution, and specifies an object containing data to be used by the method. Il metodo viene eseguito quando un thread del pool di thread diventa disponibile.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

Parametri di tipo

TState

Tipo degli elementi di state.The type of elements of state.

Parametri

callBack
Action<TState>

Delegato che rappresenta il metodo da eseguire.A delegate representing the method to execute.

state

Oggetto contenente i dati che devono essere usati dal metodo.An object containing data to be used by the method.

preferLocal
Boolean Boolean Boolean Boolean

true per preferire l'accodamento dell'elemento di lavoro in una coda vicino al thread corrente; false per preferire l'accodamento dell'elemento di lavoro nella coda condivisa del pool di thread.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.

Restituisce

true se il metodo viene accodato correttamente. Viene generata l'eccezione NotSupportedException se non è stato possibile accodare l'elemento di lavoro.true if the method is successfully queued; NotSupportedException is thrown if the work item could not be queued.

Eccezioni

Non è stato possibile accodare l'elemento di lavoro.The work item could not be queued.

Si applica a