TaskScheduler.TryExecuteTaskInline(Task, Boolean) Método

Definición

Determina si el objeto Task especificado puede ejecutarse sincrónicamente en esta llamada y, en caso afirmativo, 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

Objeto Task que se va a ejecutar.

taskWasPreviouslyQueued
Boolean

Valor booleano que indica si la tarea se ha puesto anteriormente en la cola. Si este parámetro es True, la tarea se ha puesto en la cola (programado) anteriormente; si su valor es False, la tarea no se ha puesto anteriormente en la cola y esta llamada se realiza para ejecutar la tarea insertada sin ponerla en la cola.

Devoluciones

Valor booleano que indica si se ejecutó la tarea alineada.

Atributos

Excepciones

El argumento task es null.

La task 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 se 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 insertada correctamente. 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 determinada en lo que respecta a sus propias directivas de programación y ejecución.

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

Se aplica a

Consulte también