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

Определение

Определяет, можно ли выполнить предоставленную задачу Task в этом вызове синхронно, и если возможно, выполняет ее.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);
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
[<System.Security.SecurityCritical>]
abstract member TryExecuteTaskInline : System.Threading.Tasks.Task * bool -> bool
Protected MustOverride Function TryExecuteTaskInline (task As Task, taskWasPreviouslyQueued As Boolean) As Boolean

Параметры

task
Task

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

taskWasPreviouslyQueued
Boolean

Логическое значение, указывающее, была ли задача ранее поставлена в очередь.A Boolean denoting whether or not task has previously been queued. Если этот параметр имеет значение True, задача могла ранее быть в очереди; если он имеет значение False, задача не была поставлена в очередь, а данный вызов совершается для выполнения задачи на месте без постановки в очередь.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.

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

Boolean

Логическое значение, определяющее, была ли задача выполнена на месте.A Boolean value indicating whether the task was executed inline.

Атрибуты

Исключения

Аргумент task имеет значение NULL.The task argument is null.

task уже выполнена.The task was already executed.

Комментарии

Класс, производный от TaskScheduler , реализует эту функцию для поддержки встроенного выполнения задачи в потоке, которая инициирует ожидание этого объекта задачи.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. Встроенное выполнение является необязательным, и запрос может быть отклонен путем возвращения значения false.Inline execution is optional, and the request may be rejected by returning false. Тем не менее, чем больше задач может быть встроено, тем лучше масштабируется планировщик.However, the more tasks that can be inlined, the better the scheduler will scale. Фактически, планировщик, слишком маленький, может быть подвержен взаимоблокировкам.In fact, a scheduler that inlines too little may be prone to deadlocks. Правильная реализация должна обеспечивать возможность успешного выполнения запроса, который выполняется в соответствии с политиками, гарантированными планировщиком.A proper implementation should ensure that a request executing under the policies guaranteed by the scheduler can successfully inline. Например, если планировщик использует выделенный поток для выполнения задач, все запросы на встраивание из этого потока должны быть выполнены.For example, if a scheduler uses a dedicated thread to execute tasks, any inlining requests from that thread should succeed.

Если планировщик решает выполнить встроенное выполнение, он должен сделать это, вызвав метод базового TaskScheduler TryExecuteTask с предоставленным объектом Task, выполнив распространение возвращаемого значения.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. Кроме того, планировщик может подойти к удалению встроенной задачи из ее внутренних структур данных, если он решит обработать запрос встраивания.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. Однако обратите внимание, что в некоторых обстоятельствах планировщику может быть предложено выполнить встраивание задачи, которая ранее не была предоставлена с помощью QueueTask метода.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.

Производный планировщик отвечает за обеспечение того, что вызывающий поток подходит для выполнения данной задачи до тех пор, пока применяются собственные политики планирования и выполнения.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.

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

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

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