TaskScheduler.TryExecuteTaskInline(Task, Boolean) Metod

Definition

Avgör om den angivna Task kan köras synkront i det här anropet och kör den om den kan.

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

Parametrar

task
Task

Som Task ska köras.

taskWasPreviouslyQueued
Boolean

En boolesk som anger om uppgiften har placerats i kö tidigare. Om den här parametern är True kan uppgiften ha placerats i kö tidigare (schemalagd); Om det är falskt är det känt att aktiviteten inte har placerats i kö, och det här anropet görs för att köra aktiviteten infogat utan att köa den.

Returer

Ett booleskt värde som anger om aktiviteten kördes infogat.

Attribut

Undantag

Argumentet task är null.

Har task redan körts.

Kommentarer

En klass som härleds från TaskScheduler implementerar den här funktionen för att stödja infogad körning av en aktivitet i en tråd som initierar en väntan på aktivitetsobjektet. Infogad körning är valfritt och begäran kan avvisas genom att falskt returneras. Men ju fler aktiviteter som kan infogas, desto bättre skalas schemaläggaren. Faktum är att en schemaläggare som infogar för lite kan vara benägen att dödlägen. En korrekt implementering bör säkerställa att en begäran som körs enligt de principer som garanteras av schemaläggaren kan infogas. Om en schemaläggare till exempel använder en dedikerad tråd för att köra uppgifter, bör alla inliningsbegäranden från den tråden lyckas.

Om en schemaläggare bestämmer sig för att utföra den infogade körningen bör den göra det genom att anropa till den grundläggande TaskScheduler-metoden med det angivna aktivitetsobjektet TryExecuteTask och sprida returvärdet. Det kan också vara lämpligt för schemaläggaren att ta bort en inlined uppgift från sina interna datastrukturer om den bestämmer sig för att uppfylla inliningsbegäran. Observera dock att en schemaläggare under vissa omständigheter kan uppmanas att infoga en uppgift som inte tidigare har tillhandahållits till den QueueTask med metoden.

Den härledda schemaläggaren ansvarar för att se till att den anropande tråden är lämplig för att köra den angivna uppgiften när det gäller dess egna schemaläggnings- och körningsprinciper.

Mer information finns i TaskScheduler.

Gäller för

Se även