ThreadPool.UnsafeQueueUserWorkItem Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Sobrecargas
UnsafeQueueUserWorkItem(IThreadPoolWorkItem, Boolean) |
Coloca o objeto de item de trabalho especificado na fila do pool de threads. |
UnsafeQueueUserWorkItem(WaitCallback, Object) |
Enfileira o delegado especificado no pool de threads, mas não propagar a pilha de chamadas para o thread de trabalho. |
UnsafeQueueUserWorkItem<TState>(Action<TState>, TState, Boolean) |
Enfileira um método especificado por um delegado de Action<T> para execução e especifica um objeto que contém os dados a serem usados pelo método. O método é executado quando um thread de pool de threads se torna disponível. |
UnsafeQueueUserWorkItem(IThreadPoolWorkItem, Boolean)
Coloca o objeto de item de trabalho especificado na fila do pool de threads.
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
O item de trabalho a ser invocado quando um thread do pool de threads seleciona o item de trabalho.
- preferLocal
- Boolean
true
para indicar a preferência por colocar o item de trabalho em uma fila próximo ao thread atual; false
para indicar a preferência por colocar o item de trabalho na fila compartilhada do pool de threads.
Retornos
true
se o método tiver êxito; OutOfMemoryException será gerado se não for possível colocar o item de trabalho na fila.
Exceções
callback
é null
.
O item de trabalho é uma Task.
Não foi possível colocar o item de trabalho na fila.
Comentários
O pool de threads invocará o método do item de Execute() trabalho. É responsabilidade desse item de trabalho propagar ExecutionContext se necessário; o pool de threads não o fará.
Aplica-se a
UnsafeQueueUserWorkItem(WaitCallback, Object)
Enfileira o delegado especificado no pool de threads, mas não propagar a pilha de chamadas para o thread de trabalho.
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
Um WaitCallback que retrata o delegado a ser invocado quando um thread no pool de threads coleta o item de trabalho.
- state
- Object
O objeto que é passado para o representante quando este recebe manutenção do pool de threads.
Retornos
true
se o método tiver êxito; OutOfMemoryException será gerado se não for possível colocar o item de trabalho na fila.
- Atributos
Exceções
O chamador não tem a permissão necessária.
Uma condição de memória insuficiente foi encontrada.
Não foi possível colocar o item de trabalho na fila.
callBack
é null
.
Comentários
Ao contrário do QueueUserWorkItem método, UnsafeQueueUserWorkItem não propaga a pilha de chamadas para o thread de trabalho. Isso permite que o código perca a pilha de chamadas e, assim, eleve seus privilégios de segurança.
Cuidado
Usar UnsafeQueueUserWorkItem pode abrir inadvertidamente uma falha de segurança. A segurança de acesso ao código baseia suas verificações de permissão nas permissões de todos os chamadores na pilha. Quando o trabalho é enfileirado em um thread de pool de threads usando UnsafeQueueUserWorkItem, a pilha do thread do pool de threads não terá o contexto dos chamadores reais. O código mal-intencionado pode explorar isso para evitar verificações de permissão.
Confira também
Aplica-se a
UnsafeQueueUserWorkItem<TState>(Action<TState>, TState, Boolean)
Enfileira um método especificado por um delegado de Action<T> para execução e especifica um objeto que contém os dados a serem usados pelo método. O método é executado quando um thread de pool de threads se torna disponível.
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
O tipo dos elementos de state
.
Parâmetros
- callBack
- Action<TState>
Um delegado que representa o método a ser executado.
- state
- TState
Um objeto que contém dados a serem usados pelo método.
- preferLocal
- Boolean
true
para indicar a preferência por colocar o item de trabalho em uma fila próximo ao thread atual; false
para indicar a preferência por colocar o item de trabalho na fila compartilhada do pool de threads.
Retornos
true
se o método for colocado na fila com êxito; NotSupportedException será gerado se o item de trabalho não puder ser colocado na fila.
Exceções
callback
é null
.
Não foi possível colocar o item de trabalho na fila.