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 を返すことによって要求が拒否される場合があります。 ただし、インライン化できるタスクが多いほど、スケジューラのスケーリングは向上します。 実際、インライン化が少なすぎるスケジューラでは、デッドロックが発生する可能性があります。 適切な実装では、スケジューラによって保証されたポリシーで実行される要求がインラインで正常に実行されるようにする必要があります。 たとえば、スケジューラが専用スレッドを使用してタスクを実行する場合、そのスレッドからのインライン化要求はすべて成功します。

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

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

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

適用対象

こちらもご覧ください