Udostępnij za pośrednictwem


TaskScheduler.TryExecuteTaskInline(Task, Boolean) Metoda

Definicja

Określa, czy podane Task dane mogą być wykonywane synchronicznie w tym wywołaniu, a jeśli może, wykonuje je.

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

Parametry

task
Task

Element Task do wykonania.

taskWasPreviouslyQueued
Boolean

Wartość logiczna określająca, czy zadanie zostało wcześniej w kolejce. Jeśli ten parametr ma wartość True, zadanie mogło zostać wcześniej w kolejce (zaplanowane); jeśli wartość False, wiadomo, że zadanie nie zostało w kolejce, a to wywołanie jest wykonywane w celu wykonania zadania wbudowanego bez kolejkowania.

Zwraca

Wartość logiczna wskazująca, czy zadanie zostało wykonane w tekście.

Atrybuty

Wyjątki

Argument task ma wartość null.

Element task został już wykonany.

Uwagi

Klasa utworzona na podstawie TaskScheduler implementacji tej funkcji obsługuje wbudowane wykonywanie zadania w wątku, który inicjuje oczekiwanie na ten obiekt zadania. Wykonywanie wbudowane jest opcjonalne, a żądanie może zostać odrzucone przez zwrócenie wartości false. Jednak tym więcej zadań, które mogą być wbudowane, tym lepiej harmonogram będzie skalowany. W rzeczywistości harmonogram, który jest zbyt mały, może być podatny na zakleszczenia. Właściwa implementacja powinna zapewnić, że żądanie wykonywane w ramach zasad gwarantowanych przez harmonogram może pomyślnie w tekście. Jeśli na przykład harmonogram używa dedykowanego wątku do wykonywania zadań, wszelkie żądania dotyczące tworzenia podwątku z tego wątku powinny zakończyć się powodzeniem.

Jeśli harmonogram zdecyduje się wykonać wykonywanie wbudowane, należy to zrobić, wywołując metodę base TaskScheduler TryExecuteTask z podanym obiektem zadania, propagując wartość zwracaną. Może być również odpowiednie, aby harmonogram usunął zadanie ze swoich wewnętrznych struktur danych, jeśli zdecyduje się przestrzegać żądania tworzenia podkreślenia. Należy jednak pamiętać, że w pewnych okolicznościach harmonogram może zostać poproszony o wkreślinie zadania, które nie zostało wcześniej dostarczone do niego za QueueTask pomocą metody .

Harmonogram pochodny jest odpowiedzialny za upewnienie się, że wątek wywołujący jest odpowiedni do wykonywania danego zadania, jeśli chodzi o jego własne zasady planowania i wykonywania.

Aby uzyskać więcej informacji, zobacz TaskScheduler.

Dotyczy

Zobacz też