TaskScheduler.TryExecuteTaskInline(Task, Boolean) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Determina se o fornecido Task pode ser executado de forma síncrona nesta chamada e, se possível, executa-o.
protected:
abstract bool TryExecuteTaskInline(System::Threading::Tasks::Task ^ task, bool taskWasPreviouslyQueued);
[System.Security.SecurityCritical]
protected abstract bool TryExecuteTaskInline(System.Threading.Tasks.Task task, bool taskWasPreviouslyQueued);
protected abstract bool TryExecuteTaskInline(System.Threading.Tasks.Task task, bool taskWasPreviouslyQueued);
[<System.Security.SecurityCritical>]
abstract member TryExecuteTaskInline : System.Threading.Tasks.Task * bool -> bool
abstract member TryExecuteTaskInline : System.Threading.Tasks.Task * bool -> bool
Protected MustOverride Function TryExecuteTaskInline (task As Task, taskWasPreviouslyQueued As Boolean) As Boolean
Parâmetros
- taskWasPreviouslyQueued
- Boolean
Um Booleano que indica se a tarefa já foi ou não colocada em fila. Se este parâmetro for Verdadeiro, então a tarefa pode ter sido previamente colocada em fila (agendada); se for False, então sabe-se que a tarefa não foi colocada em fila, e esta chamada é feita para executar a tarefa em linha sem a colocar na fila.
Devoluções
Um valor booleano que indica se a tarefa foi executada em linha.
- Atributos
Exceções
O task argumento é nulo.
Já task foi executado.
Observações
Uma classe derivada de TaskScheduler implementa esta função para suportar a execução em linha de uma tarefa numa thread que inicia uma espera nesse objeto de tarefa. A execução em linha é opcional, e o pedido pode ser rejeitado ao devolver false. No entanto, quanto mais tarefas puderem ser alinhadas, melhor o agendador irá escalar. De facto, um agendador que inline demasiado pouco pode ser propenso a bloqueios. Uma implementação adequada deve garantir que um pedido executado sob as políticas garantidas pelo agendador pode ser executado com sucesso em linha. Por exemplo, se um escalonador usar um thread dedicado para executar tarefas, quaisquer pedidos de inlining desse thread devem ter sucesso.
Se um agendador decidir realizar a execução em linha, deve fazê-lo chamando o método base do TaskScheduler TryExecuteTask com o objeto de tarefa fornecido, propagando o valor de retorno. Também pode ser apropriado que o agendador remova uma tarefa em linha das suas estruturas de dados internas caso decida respeitar o pedido de inlining. Note-se, no entanto, que em algumas circunstâncias um agendador pode ser solicitado a alinhar uma tarefa que não lhe foi previamente atribuída com o QueueTask método.
O escalonador derivado é responsável por garantir que a thread de chamada é adequada para executar a tarefa dada no que diz respeito às suas próprias políticas de agendamento e execução.
Para obter mais informações, veja TaskScheduler.