TaskScheduler.TryExecuteTaskInline(Task, Boolean) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- 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.