共用方式為


ICLRTask::Reset 方法

通知 Common Language Runtime (CLR) 主機已完成工作,並讓 CLR 重複使用目前的 ICLRTask 執行個體來代表另一項工作。

語法

HRESULT Reset (  
    [in] BOOL fFull  
);  

參數

fFull
[in] true,如果執行階段除了與目前 ICLRTask 執行個體相關的安全性和地區設定資訊之外,應該重設所有執行緒相關的靜態值,否則為 false

如果值為 true,則執行階段會重設使用 AllocateDataSlotAllocateNamedDataSlot 儲存的資料。

傳回值

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 執行個體的一般生命週期:

  1. 執行階段會建立新的 ICLRTask 執行個體。

  2. 執行階段會呼叫 IHostTaskManager::GetCurrentTask 以取得目前主機工作的參考。

  3. 執行階段會呼叫 IHostTask::SetCLRTask,以將新執行個體與主機工作產生關聯。

  4. 工作會執行並完成。

  5. 主機會藉由呼叫 ICLRTask::ExitTask 來終結工作。

Reset 以兩種方式改變此案例。 在上述步驟 5 中,主機會呼叫 Reset,將工作重設為清除狀態,然後將 ICLRTask 執行個體與其相關聯的 IHostTask 執行個體分離。 如有需要,主機也可以快取 IHostTask 執行個體以供重複使用。 在上述步驟 1 中,執行階段會從快取提取回收的 ICLRTask,而不是建立新的執行個體。

當主機也有可重複使用背景工作角色工作的集區時,這個方法很適合。 當主機終結它的其中一個 IHostTask 執行個體時,它會藉由呼叫 ExitTask 來終結對應的 ICLRTask

規格需求

平台:請參閱系統需求

標題: MSCorEE.h

程式庫:包含作為 MSCorEE.dll 中的資源

.NET Framework版本:自 2.0 起提供

另請參閱