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」を参照してください。

適用対象

こちらもご覧ください