共用方式為


ICLRTask::Reset 方法

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

HRESULT Reset (
    [in] BOOL fFull
);

參數

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

    如果這個值為 true,則執行階段會重設之前使用 AllocateDataSlotAllocateNamedDataSlot 所存放的資料。

傳回值

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

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

  2. 執行階段會呼叫 IHostTaskManager::GetCurrentTask,取得目前主應用程式工作的參考。

  3. 執行階段會呼叫 IHostTask::SetCLRTask,使新的執行個體與主應用程式工作產生關聯。

  4. 這項工作會執行並完成。

  5. 主應用程式會藉由呼叫 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

請參閱

參考

ICLRTask 介面

ICLRTaskManager 介面

IHostTask 介面

IHostTaskManager 介面