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
Параметры
- taskWasPreviouslyQueued
- Boolean
Логическое значение, указывающее, была ли ранее поставлена задача в очередь. Если этот параметр имеет значение True, то задача, возможно, была поставлена в очередь (запланировано); Если значение false, то задача, как известно, не была поставлена в очередь, и этот вызов выполняется для выполнения встроенной задачи без очереди.
Возвращаемое значение
Логическое значение, указывающее, была ли выполнена встроенная задача.
- Атрибуты
Исключения
Аргумент task имеет значение NULL.
Он task уже был выполнен.
Комментарии
Класс, производный от TaskScheduler реализации этой функции для поддержки встроенного выполнения задачи в потоке, который инициирует ожидание этого объекта задачи. Встроенное выполнение является необязательным, и запрос может быть отклонен, возвращая значение false. Тем не менее, чем больше задач, которые могут быть вложены, тем лучше планировщик будет масштабироваться. На самом деле планировщик, который встраивает слишком мало, может быть подвержен взаимоблокировкам. Правильная реализация должна гарантировать, что запрос, выполняемый в соответствии с политиками, гарантированной планировщиком, может успешно встраивание. Например, если планировщик использует выделенный поток для выполнения задач, все запросы на подстраивание из этого потока должны завершиться успешно.
Если планировщик решит выполнить встроенное выполнение, он должен сделать это, вызвав метод Base TaskScheduler TryExecuteTask с предоставленным объектом задачи, распространяя возвращаемое значение. Кроме того, планировщик может быть подходящим для удаления встроенной задачи из внутренних структур данных, если он решит выполнить встраивание запроса. Обратите внимание, что при некоторых обстоятельствах планировщику может быть предложено ввести в него задачу, которая ранее не была предоставлена методу QueueTask .
Производный планировщик отвечает за обеспечение того, чтобы вызывающий поток подходит для выполнения данной задачи в соответствии с собственными политиками планирования и выполнения.
Дополнительные сведения см. в разделе TaskScheduler.