ThreadPool.UnsafeQueueUserWorkItem Metodo

Definizione

Overload

UnsafeQueueUserWorkItem(IThreadPoolWorkItem, Boolean)

Accoda l'oggetto elemento di lavoro specificato nel pool di thread.

UnsafeQueueUserWorkItem(WaitCallback, Object)

Accoda il delegato specificato al pool di thread, ma non propaga lo stack di chiamata nel thread di lavoro.

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. Il metodo viene eseguito quando un thread del pool di thread diventa disponibile.

UnsafeQueueUserWorkItem(IThreadPoolWorkItem, Boolean)

Accoda l'oggetto elemento di lavoro specificato nel pool di thread.

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

Elemento di lavoro da richiamare quando un thread nel pool di thread preleva l'elemento di lavoro.

preferLocal
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.

Restituisce

true se il metodo viene eseguito correttamente. Viene generata l'eccezione OutOfMemoryException se non è stato possibile accodare l'elemento di lavoro.

Eccezioni

callback è null.

L'elemento di lavoro è un Task.

Non è stato possibile accodare l'elemento di lavoro.

Commenti

Il pool di thread richiama il metodo dell'elemento di Execute() lavoro. È responsabilità di tale elemento di lavoro propagare ExecutionContext se necessario; il pool di thread non lo farà.

Si applica a

UnsafeQueueUserWorkItem(WaitCallback, Object)

Accoda il delegato specificato al pool di thread, ma non propaga lo stack di chiamata nel thread di lavoro.

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

Parametri

callBack
WaitCallback

Oggetto WaitCallback che rappresenta il delegato da richiamare quando un thread nel pool di thread sceglie l'elemento di lavoro.

state
Object

Oggetto passato al delegato quando viene servito dal pool di thread.

Restituisce

true se il metodo viene eseguito correttamente. Viene generata l'eccezione OutOfMemoryException se non è stato possibile accodare l'elemento di lavoro.

Attributi

Eccezioni

Il chiamante non dispone dell'autorizzazione richiesta.

È stata rilevata una condizione di memoria insufficiente.

Non è stato possibile accodare l'elemento di lavoro.

callBack è null.

Commenti

A differenza del QueueUserWorkItem metodo, UnsafeQueueUserWorkItem non propaga lo stack di chiamate al thread di lavoro. Ciò consente al codice di perdere lo stack di chiamate e quindi di elevare i privilegi di sicurezza.

Attenzione

L'uso UnsafeQueueUserWorkItem potrebbe aprire inavvertitamente un buco di sicurezza. L'accesso al codice si basa sulle autorizzazioni di tutti i chiamanti nello stack. Quando il lavoro viene accodato in un thread del pool di thread usando UnsafeQueueUserWorkItem, lo stack del thread del pool di thread non avrà il contesto dei chiamanti effettivi. Il codice dannoso potrebbe essere in grado di sfruttarlo per evitare controlli delle autorizzazioni.

Vedi anche

Si applica a

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. Il metodo viene eseguito quando un thread del pool di thread diventa disponibile.

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.

Parametri

callBack
Action<TState>

Delegato che rappresenta il metodo da eseguire.

state
TState

Oggetto contenente i dati che devono essere usati dal metodo.

preferLocal
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.

Restituisce

true se il metodo viene accodato correttamente. Viene generata l'eccezione NotSupportedException se non è stato possibile accodare l'elemento di lavoro.

Eccezioni

callback è null.

Non è stato possibile accodare l'elemento di lavoro.

Si applica a