Teilen über


TaskScheduler.TryExecuteTaskInline(Task, Boolean) Methode

Definition

Bestimmt, ob der angegebene Task in diesem Aufruf synchron ausgeführt werden kann, und führt ihn aus, wenn dies der Fall ist.

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

Parameter

task
Task

Das auszuführende Task.

taskWasPreviouslyQueued
Boolean

Ein boolescher Wert, der angibt, ob die Aufgabe zuvor in die Warteschlange eingereiht wurde. Wenn dieser Parameter true ist, wurde die Aufgabe möglicherweise zuvor in die Warteschlange eingereiht (geplant). Ist er false, wurde die Aufgabe bekanntermaßen nicht in die Warteschlange eingereiht, und dieser Aufruf wird ausgeführt, um die Aufgabe inline auszuführen, ohne sie in die Warteschlange einzureihen.

Gibt zurück

Ein boolescher Wert, der angibt, ob die Aufgabe inline ausgeführt wurde.

Attribute

Ausnahmen

Das task-Argument ist null.

Der task wurde bereits ausgeführt.

Hinweise

Eine von abgeleitete TaskScheduler Klasse implementiert diese Funktion, um die Inlineausführung eines Tasks in einem Thread zu unterstützen, der eine Wartezeit für dieses Aufgabenobjekt initiiert. Die Inlineausführung ist optional, und die Anforderung kann abgelehnt werden, indem false zurückgegeben wird. Je mehr Aufgaben jedoch inlineiert werden können, desto besser wird der Planer skaliert. In der Tat kann ein Scheduler, der zu wenig inline ist anfällig für Deadlocks. Eine ordnungsgemäße Implementierung sollte sicherstellen, dass eine Anforderung, die unter den vom Scheduler garantierten Richtlinien ausgeführt wird, erfolgreich inline ausgeführt werden kann. Wenn ein Planer beispielsweise einen dedizierten Thread zum Ausführen von Aufgaben verwendet, sollten alle Inlininganforderungen aus diesem Thread erfolgreich sein.

Wenn ein Planer beschließt, die Inlineausführung auszuführen, sollte er dies TryExecuteTask tun, indem er die TaskScheduler-Basismethode mit dem bereitgestellten Aufgabenobjekt aufruft und den Rückgabewert weitergibt. Es kann auch angemessen sein, dass der Planer eine inlineierte Aufgabe aus seinen internen Datenstrukturen entfernt, wenn er beschließt, die Inlininganforderung zu berücksichtigen. Beachten Sie jedoch, dass unter bestimmten Umständen ein Planer aufgefordert werden kann, eine Aufgabe inline zu inlineieren, die zuvor nicht mit der QueueTask -Methode bereitgestellt wurde.

Der abgeleitete Planer ist dafür verantwortlich, sicherzustellen, dass der aufrufende Thread für die Ausführung der angegebenen Aufgabe geeignet ist, soweit es sich um eigene Planungs- und Ausführungsrichtlinien handelt.

Weitere Informationen finden Sie unter TaskScheduler.

Gilt für:

Weitere Informationen