TaskScheduler.TryExecuteTaskInline(Task, Boolean) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
判斷所提供的 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
參數
- taskWasPreviouslyQueued
- Boolean
一個布林值,表示任務是否已被排隊。 若此參數為 True,則該任務可能已被排隊(排程);若為 False,則表示該任務尚未被排隊,此呼叫是為了在不排隊的情況下內聯執行任務。
傳回
一個布林值,表示任務是否在內線執行。
- 屬性
例外狀況
這個 task 論證是空的。
他 task 已經被處決了。
備註
衍生出 TaskScheduler 的類別實作此函式,以支援在執行緒中內嵌執行任務,該執行緒會對該任務物件發起等待。 內線執行為可選,請求可透過回傳 false 來拒絕。 然而,能內嵌的任務越多,排程器的擴展性就越好。 事實上,排程器若內嵌太少,可能會陷入僵局。 正確的實作應確保在排程器保證的政策下執行的請求能成功內嵌。 例如,如果排程器使用專用執行緒執行任務,該執行緒的任何內嵌請求都應該會成功。
如果排程器決定執行內嵌執行,應該透過呼叫基礎任務排程 TryExecuteTask 器的方法(帶有任務物件)並傳播回傳值來執行。 如果排程器決定尊重內嵌請求,也可能適合將其內部資料結構移除內嵌任務。 不過請注意,在某些情況下,排程器可能會被要求將先前未被方法提供的 QueueTask 任務串聯。
導出排程器負責確保呼叫執行緒在其自身的排程與執行政策上,是否適合執行該任務。
如需詳細資訊,請參閱TaskScheduler。