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.Determines whether the provided Task can be executed synchronously in this call, and if it can, executes it.

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);
abstract member TryExecuteTaskInline : System.Threading.Tasks.Task * bool -> bool

Parámetros

task
Task

Objeto Task que se va a ejecutar.The Task to be executed.

taskWasPreviouslyQueued
Boolean

Valor booleano que indica si la tarea se ha puesto anteriormente en la cola.A Boolean denoting whether or not task has previously been queued. 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.If this parameter is True, then the task may have been previously queued (scheduled); if False, then the task is known not to have been queued, and this call is being made in order to execute the task inline without queuing it.

Devoluciones

Valor booleano que indica si se ejecutó la tarea alineada.A Boolean value indicating whether the task was executed inline.

Atributos

Excepciones

El argumento task es null.The task argument is null.

La task ya se ejecutó.The task was already executed.

Comentarios

Una clase derivada de TaskScheduler implementa esta función para admitir la ejecución en línea de una tarea en un subproceso que inicia una espera en ese objeto de tarea.A class derived from TaskScheduler implements this function to support inline execution of a task on a thread that initiates a wait on that task object. La ejecución en línea es opcional y la solicitud se puede rechazar devolviendo false.Inline execution is optional, and the request may be rejected by returning false. Sin embargo, las tareas que se pueden insertar, mejor escalará el programador.However, the more tasks that can be inlined, the better the scheduler will scale. De hecho, un programador que inserta demasiado poco puede ser propenso a interbloqueos.In fact, a scheduler that inlines too little may be prone to deadlocks. Una implementación adecuada debe asegurarse de que una solicitud que se ejecuta en las directivas garantizadas por el programador puede alinearse correctamente.A proper implementation should ensure that a request executing under the policies guaranteed by the scheduler can successfully inline. Por ejemplo, si un programador usa un subproceso dedicado para ejecutar tareas, todas las solicitudes de inserción desde ese subproceso deben realizarse correctamente.For example, if a scheduler uses a dedicated thread to execute tasks, any inlining requests from that thread should succeed.

Si un programador decide realizar la ejecución en línea, debe hacerlo llamando al método de TaskScheduler base con el objeto de TryExecuteTask tarea proporcionado, propagando el valor devuelto.If a scheduler decides to perform the inline execution, it should do so by calling to the base TaskScheduler's TryExecuteTask method with the provided task object, propagating the return value. También puede ser adecuado para que el programador Quite una tarea insertada de sus estructuras de datos internas si decide respetar la solicitud de inserción.It may also be appropriate for the scheduler to remove an inlined task from its internal data structures if it decides to honor the inlining request. Tenga en cuenta, sin embargo, que en algunas circunstancias se puede solicitar a un programador que inlinee una tarea que no se le QueueTask proporcionó previamente con el método.Note, however, that under some circumstances a scheduler may be asked to inline a task that was not previously provided to it with the QueueTask method.

El programador derivado es responsable de asegurarse de que el subproceso que realiza la llamada es adecuado para ejecutar la tarea determinada en lo que respecta a sus propias directivas de programación y ejecución.The derived scheduler is responsible for making sure that the calling thread is suitable for executing the given task as far as its own scheduling and execution policies are concerned.

Para obtener más información, vea TaskScheduler.For more information, see TaskScheduler.

Se aplica a

Consulte también: