TaskScheduler.TryExecuteTaskInline(Task, Boolean) Método

Definición

Determina si el proporcionado Task se puede ejecutar de forma sincrónica en esta llamada y, si es posible, lo ejecuta.

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

que Task se va a ejecutar.

taskWasPreviouslyQueued
Boolean

Valor booleano que indica si la tarea se ha puesto en cola anteriormente o no. Si este parámetro es True, es posible que la tarea se haya puesto en cola (programada); Si es False, se sabe que la tarea no se ha puesto en cola y se realiza esta llamada para ejecutar la tarea en línea sin ponerla en cola.

Devoluciones

Valor booleano que indica si la tarea se ejecutó en línea.

Atributos

Excepciones

El task argumento es NULL.

El task objeto ya se ejecutó.

Comentarios

Una clase derivada de TaskScheduler implementa esta función para admitir la ejecución insertada de una tarea en un subproceso que inicia una espera en ese objeto de tarea. La ejecución en línea es opcional y la solicitud se puede rechazar devolviendo false. Sin embargo, cuantos más tareas se puedan insertar, mejor escalará el programador. De hecho, un programador que inserte demasiado poco puede ser propenso a interbloqueos. Una implementación adecuada debe asegurarse de que una solicitud que se ejecuta en las directivas garantizadas por el programador puede estar correctamente alineada. Por ejemplo, si un programador usa un subproceso dedicado para ejecutar tareas, las solicitudes de inserción de ese subproceso deben realizarse correctamente.

Si un programador decide realizar la ejecución insertada, debe hacerlo llamando al método de TaskScheduler TryExecuteTask base con el objeto de tarea proporcionado, propagando el valor devuelto. También puede ser adecuado que el programador quite una tarea insertada de sus estructuras de datos internas si decide respetar la solicitud de inserción. Sin embargo, tenga en cuenta que, en algunas circunstancias, se puede pedir a un programador que inserte una tarea que no se le proporcionó anteriormente con el QueueTask método .

El programador derivado es responsable de asegurarse de que el subproceso de llamada es adecuado para ejecutar la tarea dada en lo que respecta a sus propias directivas de programación y ejecución.

Para obtener más información, consulte TaskScheduler.

Se aplica a

Consulte también