TaskScheduler.TryExecuteTaskInline(Task, Boolean) Método

Definição

Determina se os fornecidos Task podem ser executados de forma síncrona nesta chamada e, se puder, executá-lo.

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 ou não enfileirada anteriormente. Se esse parâmetro for True, a tarefa poderá ter sido enfileirada anteriormente (agendada); se False, sabe-se que a tarefa não foi enfileirada e essa chamada está sendo feita para executar a tarefa embutida sem enfileirar.

Retornos

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

Atributos

Exceções

O task argumento é 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 estar 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, todas as solicitações de sublinhamento desse thread deverão ser bem-sucedidas.

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 para o agendador remover uma tarefa embutida de suas estruturas de dados internas se decidir atender à solicitação de inlining. No entanto, observe que, em algumas circunstâncias, um agendador pode ser solicitado a alinhar 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 a suas próprias políticas de agendamento e execução.

Para obter mais informações, consulte TaskScheduler.

Aplica-se a

Confira também