ICLRTask::Reset 方法
通知 Common Language Runtime (CLR) 主機已完成工作,並讓 CLR 重複使用目前的 ICLRTask 執行個體來代表另一項工作。
語法
HRESULT Reset (
[in] BOOL fFull
);
參數
fFull
[in] true
,如果執行階段除了與目前 ICLRTask
執行個體相關的安全性和地區設定資訊之外,應該重設所有執行緒相關的靜態值,否則為 false
。
如果值為 true
,則執行階段會重設使用 AllocateDataSlot 或 AllocateNamedDataSlot 儲存的資料。
傳回值
HRESULT | 描述 |
---|---|
S_OK | Reset 已成功傳回。 |
HOST_E_CLRNOTAVAILABLE | CLR 尚未載入處理序,或 CLR 處於無法執行受控程式碼或處理呼叫的狀態。 成功 |
HOST_E_TIMEOUT | 呼叫逾時。 |
HOST_E_NOT_OWNER | 呼叫端未擁有鎖定。 |
HOST_E_ABANDONED | 封鎖的執行緒或 Fiber 在其上等候時,事件遭到取消。 |
E_FAIL | 發生未知的重大失敗。 如果方法傳回 E_FAIL,則 CLR 就無法再用於處理序。 後續對裝載方法發出的呼叫會傳回 HOST_E_CLRNOTAVAILABLE。 |
備註
CLR 可以回收先前建立的 ICLRTask
執行個體,以避免每次需要全新工作時重複建立新執行個體的額外負荷。 主機會在工作完成時呼叫 ICLRTask::Reset
,而不是 ICLRTask::ExitTask 來啟用此功能。 下列清單摘要說明 ICLRTask
執行個體的一般生命週期:
執行階段會建立新的
ICLRTask
執行個體。執行階段會呼叫 IHostTaskManager::GetCurrentTask 以取得目前主機工作的參考。
執行階段會呼叫 IHostTask::SetCLRTask,以將新執行個體與主機工作產生關聯。
工作會執行並完成。
主機會藉由呼叫
ICLRTask::ExitTask
來終結工作。
Reset
以兩種方式改變此案例。 在上述步驟 5 中,主機會呼叫 Reset
,將工作重設為清除狀態,然後將 ICLRTask
執行個體與其相關聯的 IHostTask 執行個體分離。 如有需要,主機也可以快取 IHostTask
執行個體以供重複使用。 在上述步驟 1 中,執行階段會從快取提取回收的 ICLRTask
,而不是建立新的執行個體。
當主機也有可重複使用背景工作角色工作的集區時,這個方法很適合。 當主機終結它的其中一個 IHostTask
執行個體時,它會藉由呼叫 ExitTask
來終結對應的 ICLRTask
。
規格需求
平台:請參閱系統需求。
標題: MSCorEE.h
程式庫:包含作為 MSCorEE.dll 中的資源
.NET Framework版本:自 2.0 起提供