TaskScheduler.TryExecuteTaskInline(Task, Boolean) Метод

Определение

Определяет, можно ли выполнить предоставленную задачу Task в этом вызове синхронно, и если возможно, выполняет ее.

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

Параметры

task
Task

Выполняемый объект Task.

taskWasPreviouslyQueued
Boolean

Логическое значение, указывающее, была ли задача ранее поставлена в очередь. Если этот параметр имеет значение True, задача могла ранее быть в очереди; если он имеет значение False, задача не была поставлена в очередь, а данный вызов совершается для выполнения задачи на месте без постановки в очередь.

Возвращаемое значение

Boolean

Логическое значение, определяющее, была ли задача выполнена на месте.

Атрибуты

Исключения

Аргумент task имеет значение NULL.

task уже выполнена.

Комментарии

Класс, производный от TaskScheduler реализации этой функции для поддержки встроенного выполнения задачи в потоке, который инициирует ожидание этого объекта задачи. Встроенное выполнение является необязательным, и запрос может быть отклонен путем возврата false. Тем не менее чем больше задач можно встраить, тем лучше планировщик будет масштабироваться. На самом деле планировщик, который встраивает слишком мало, может быть подвержен взаимоблокировкам. Правильная реализация должна гарантировать, что запрос, выполняемый в соответствии с политиками, гарантированной планировщиком, может успешно встраивание. Например, если планировщик использует выделенный поток для выполнения задач, все запросы на встраивание из этого потока должны быть успешными.

Если планировщик решит выполнить встроенное выполнение, он должен сделать это, вызвав метод base TaskScheduler TryExecuteTask с предоставленным объектом задачи, распространяя возвращаемое значение. Кроме того, планировщик может удалить встроенную задачу из внутренних структур данных, если он решит выполнить встраивание запроса. Однако обратите внимание, что при некоторых обстоятельствах планировщику может быть предложено встраивать задачу, которая ранее не была предоставлена QueueTask ему с помощью метода.

Производный планировщик отвечает за обеспечение того, что вызывающий поток подходит для выполнения данной задачи в соответствии с собственными политиками планирования и выполнения.

Для получения дополнительной информации см. TaskScheduler.

Применяется к

См. также раздел