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 の場合、タスクはキューに登録されていないことがわかっており、キューに入れずにタスクをインラインで実行するためにこの呼び出しが行われています。

返品

タスクがインラインで実行されたかどうかを示すブール値。

属性

例外

task引数は null です。

taskは既に実行されています。

注釈

TaskSchedulerから派生したクラスは、この関数を実装して、そのタスク オブジェクトの待機を開始するスレッドでのタスクのインライン実行をサポートします。 インライン実行は省略可能であり、false を返すことによって要求が拒否される場合があります。 ただし、インライン化できるタスクが多いほど、スケジューラのスケーリングが向上します。 実際、インライン化が少なすぎるスケジューラでは、デッドロックが発生する可能性があります。 適切な実装では、スケジューラによって保証されたポリシーで実行される要求がインラインで正常に実行されるようにする必要があります。 たとえば、スケジューラが専用スレッドを使用してタスクを実行する場合、そのスレッドからのインライン化要求は成功するはずです。

スケジューラがインライン実行を実行することを決定した場合は、指定されたタスク オブジェクトを使用して基本 TaskScheduler の TryExecuteTask メソッドを呼び出し、戻り値を伝達します。 また、インライン化要求を受け入れる場合は、スケジューラがその内部データ構造からインライン タスクを削除することが適切な場合もあります。 ただし、状況によっては、スケジューラは、 QueueTask メソッドで以前に提供されていないタスクをインライン化するように求められる場合があることに注意してください。

派生スケジューラは、独自のスケジュールと実行ポリシーに関する限り、呼び出し元のスレッドが特定のタスクの実行に適していることを確認します。

詳細については、TaskSchedulerを参照してください。

適用対象

こちらもご覧ください