ICLRTask::Reset 方法
告知 Common Language Runtime (CLR) 主應用程式已完成工作,並讓 CLR 重複使用目前的 ICLRTask 執行個體來代表另一項工作。
HRESULT Reset (
[in] BOOL fFull
);
參數
fFull
[in] 如果執行階段除了與目前的 ICLRTask 執行個體有關的安全性和地區設定資訊外,也應該重設所有執行緒相關的靜態值,則為 true,否則為 false。如果這個值為 true,則執行階段會重設之前使用 AllocateDataSlot 或 AllocateNamedDataSlot 所存放的資料。
傳回值
HRESULT |
描述 |
---|---|
S_OK |
Reset 已成功傳回。 |
HOST_E_CLRNOTAVAILABLE |
CLR 尚未載入至處理序中,或者此 CLR 目前的狀態無法執行 Managed 程式碼或無法順利處理 呼叫。 |
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。
需求
**平台:**請參閱 .NET Framework 系統需求。
**標頭:**MSCorEE.h
程式庫:包含做為 MSCorEE.dll 中的資源
**.NET Framework 版本:**4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0