Compartilhar via


TaskScheduler.TryExecuteTaskInline(Task, Boolean) Método

Definição

Determina se o Task fornecido pode ser executado de forma síncrona nessa chamada e, se for possível, o executa.

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

task
Task

O Task a ser executado.

taskWasPreviouslyQueued
Boolean

Um booliano que indica se a tarefa foi colocada na fila anteriormente. Se esse parâmetro for True, talvez a tarefa tenha sido colocada na fila anteriormente (agendada); se for False, será indicado que a tarefa não foi colocada na fila e essa chamada está sendo feita para executar a tarefa embutida sem colocá-la na fila.

Retornos

Boolean

Um valor booliano que indica se a tarefa foi executada embutida.

Atributos

Exceções

O argumento task é nulo.

O task já foi executado.

Comentários

Uma classe derivada de TaskScheduler implementa essa função para dar suporte à execução embutida de uma tarefa em um thread que inicia uma espera nesse objeto de tarefa. A execução embutida é opcional e a solicitação pode ser rejeitada retornando false. No entanto, quanto mais tarefas puderem ser embutidas, melhor será a escala do agendador. Na verdade, um agendador que está embutido muito pouco pode ser propenso a deadlocks. Uma implementação adequada deve garantir que uma solicitação em execução sob as políticas garantidas pelo agendador possa ser embutida com êxito. Por exemplo, se um agendador usar um thread dedicado para executar tarefas, qualquer solicitação de inlining desse thread deverá ter êxito.

Se um agendador decidir executar a execução embutida, ele deverá fazer isso chamando o método taskScheduler base com o objeto de TryExecuteTask tarefa fornecido, propagando o valor retornado. Também pode ser apropriado que o agendador remova uma tarefa embutida de suas estruturas de dados internas se decidir honrar a solicitação de inlining. No entanto, observe que, em algumas circunstâncias, um agendador pode ser solicitado a inserir em linha uma tarefa que não foi fornecida anteriormente a ela com o QueueTask método.

O agendador derivado é responsável por garantir que o thread de chamada seja adequado para executar a tarefa determinada no que diz respeito às suas próprias políticas de agendamento e execução.

Para obter mais informações, consulte TaskScheduler.

Aplica-se a

Confira também