TaskScheduler.TryExecuteTaskInline(Task, Boolean) Méthode

Définition

Détermine si la Task fournie peut être exécutée de façon synchrone dans cet appel et, si c'est le cas, l'exécute.

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

Paramètres

task
Task

Task à exécuter.

taskWasPreviouslyQueued
Boolean

Valeur booléenne qui indique si une tâche a déjà été mise en file d'attente. Si ce paramètre a la valeur True, la tâche a pu être mise en file d'attente (par planification) précédemment ; s'il a la valeur False, cela signifie que la tâche a été mise en file d'attente et que cet appel est passé pour exécuter la tâche inline sans mise en file d'attente.

Retours

Valeur booléenne qui indique si la tâche a été exécutée inline.

Attributs

Exceptions

L’argument task a la valeur null.

task a déjà été exécuté.

Remarques

Une classe dérivée de TaskScheduler implémente cette fonction pour prendre en charge l’exécution inline d’une tâche sur un thread qui lance une attente sur cet objet de tâche. L’exécution inline est facultative et la demande peut être rejetée en retournant false. Toutefois, plus le nombre de tâches pouvant être incorporées est grand, meilleure est la mise à l’échelle du planificateur. En fait, un planificateur qui inline trop peu peut être sujet à des blocages. Une implémentation appropriée doit garantir qu’une requête s’exécutant dans le cadre des stratégies garanties par le planificateur peut être correctement intégrée. Par exemple, si un planificateur utilise un thread dédié pour exécuter des tâches, toutes les demandes d’inline de ce thread doivent réussir.

Si un planificateur décide d’effectuer l’exécution inline, il doit le faire en appelant la méthode TaskScheduler de TryExecuteTask base avec l’objet de tâche fourni, en propageant la valeur de retour. Il peut également être approprié pour le planificateur de supprimer une tâche incorporée de ses structures de données internes s’il décide d’honorer la demande d’intégration. Notez toutefois que, dans certaines circonstances, un planificateur peut être invité à ajouter une tâche qui ne lui a pas été fournie auparavant avec la QueueTask méthode.

Le planificateur dérivé est chargé de s’assurer que le thread appelant est adapté à l’exécution de la tâche donnée en ce qui concerne ses propres stratégies de planification et d’exécution.

Pour plus d'informations, consultez TaskScheduler.

S’applique à

Voir aussi