ICorProfilerCallback::JITCachedFunctionSearchStarted 方法
更新:2007 年 11 月
向分析工具告知已開始搜尋先前使用原生映像產生器 (NGen.exe) 所編譯的函式。
HRESULT JITCachedFunctionSearchStarted(
[in] FunctionID functionId,
[out] BOOL *pbUseCachedFunction);
參數
functionId
[in] 正在對其執行搜尋的函式 ID。pbUseCachedFunction
[out] 如果執行引擎應使用函式的快取版本 (如果有的話),則為 true,否則為 false。如果此值為 false,則執行引擎會 JIT 編譯此函式,而不會使用非 JIT 編譯的版本。
備註
在 .NET Framework 2.0 版中,將不會對標準 NGen 映像中的所有函式進行 JITCachedFunctionSearchStarted 和 ICorProfilerCallback::JITCachedFunctionSearchFinished 方法回呼。已針對特性最佳化的 NGen 映像才會對映像中的所有函式產生回呼。不過,由於其他額外負荷,只有在分析工具要使用這些回呼來強制 Just-In-Time (JIT) 編譯函式時,才應要求分析工具最佳化的 NGen 映像。否則分析工具應使用延遲策略來收集函式資訊。
分析工具必須支援被分析應用程式的多個執行緒同時呼叫相同方法之實例。例如,執行緒 A 呼叫 JITCachedFunctionSearchStarted,而且分析工具將 pbUseCachedFunction設為 FALSE 以強制 JIT 編譯,予以回應。執行緒 A 接著會呼叫 ICorProfilerCallback::JITCompilationStarted 和 ICorProfilerCallback::JITCompilationFinished。
現在執行緒 B 呼叫相同函式的 JITCachedFunctionSearchStarted。即使分析工具已表示 JIT 編譯此函式的用意,分析工具還是會收到第二個回呼,因為在分析工具回應執行緒 A 的 JITCachedFunctionSearchStarted 呼叫之前,執行緒 B 會先傳送此回呼。執行緒呼叫的順序取決於執行緒排程的方式。
當分析工具接收重複的回呼時,它必須針對所有重複的回呼,將 pbUseCachedFunction 所參考的值設為相同值。也就是說,以相同的 functionId 值多次呼叫 JITCachedFunctionSearchStarted 時,分析工具每次都必須做相同回應。
需求
**平台:**請參閱 .NET Framework 系統需求。
**標頭:**CorProf.idl
**程式庫:**CorGuids.lib
**.NET Framework 版本:**3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0