TaskScheduler.TryExecuteTaskInline(Task, Boolean) Metodo

Definizione

Determina se l'oggetto Task fornito può essere eseguito in modo sincrono in questa chiamata e, in tal caso, lo esegue.

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

Parametri

task
Task

Oggetto Task da eseguire.

taskWasPreviouslyQueued
Boolean

Boolean che indica se l'attività è stata accodata in precedenza. Se questo parametro è True, è possibile che l'attività sia stata accodata (pianificata) in precedenza. Se è False, è noto che l'attività non è stata accodata e questa chiamata viene effettuata per eseguire l'attività inline senza accodarla.

Restituisce

Valore booleano che indica se l'attività è stata eseguita inline.

Attributi

Eccezioni

L'argomento task è Null.

L'oggetto task è stato già eseguito.

Commenti

Una classe derivata da TaskScheduler implementa questa funzione per supportare l'esecuzione inline di un'attività in un thread che avvia un'attesa su tale oggetto attività. L'esecuzione inline è facoltativa e la richiesta può essere rifiutata restituendo false. Tuttavia, più attività che possono essere inlinedite, migliore sarà la scalabilità dell'utilità di pianificazione. Infatti, un utilità di pianificazione che inlines troppo poco può essere soggetta a deadlock. Un'implementazione appropriata deve garantire che una richiesta in esecuzione nei criteri garantiti dall'utilità di pianificazione possa essere inline correttamente. Ad esempio, se un utilità di pianificazione usa un thread dedicato per eseguire attività, eventuali richieste di inserimento da tale thread devono essere riuscite.

Se un utilità di pianificazione decide di eseguire l'esecuzione inline, deve farlo chiamando il metodo taskScheduler di TryExecuteTask base con l'oggetto attività specificato, propagando il valore restituito. Può anche essere appropriato per l'utilità di pianificazione rimuovere un'attività inlined dalle sue strutture dati interne se decide di rispettare la richiesta di inserimento. Si noti tuttavia che, in alcune circostanze, un utilità di pianificazione può essere chiesto di inlineare un'attività non fornita in precedenza con il QueueTask metodo .

L'utilità di pianificazione derivata è responsabile per assicurarsi che il thread chiamante sia adatto per l'esecuzione dell'attività specificata per quanto riguarda la pianificazione e i criteri di esecuzione.

Per altre informazioni, vedere TaskScheduler.

Si applica a

Vedi anche