Delen via


Methode ICorProfilerInfo3::RequestProfilerDetach

Hiermee wordt de runtime geïnstrueerd om de profiler los te koppelen.

Syntaxis

HRESULT RequestProfilerDetach(
   [in] DWORD    dwExpectedCompletionMilliseconds);

Parameters

dwExpectedCompletionMilliseconds [in] De tijdsduur, in milliseconden, moet de COMMON Language Runtime (CLR) wachten voordat wordt gecontroleerd of de profiler veilig kan worden geladen.

Retourwaarde

Deze methode retourneert de volgende specifieke HRESULT's, evenals HRESULT-fouten die duiden op een fout in de methode.

HRESULT Beschrijving
S_OK De loskoppelaanvraag is geldig en de loskoppelprocedure wordt nu voortgezet op een andere thread. Wanneer de loskoppeling volledig is voltooid, wordt er een ProfilerDetachSucceeded gebeurtenis uitgegeven.
E_CORPROF_E_CALLBACK3_REQUIRED De profiler heeft een IUnknown::QueryInterface-poging voor de ICorProfilerCallback3-interface , die moet worden geïmplementeerd om de loskoppelbewerking te ondersteunen, mislukt. Loskoppelen is niet geprobeerd.
CORPROF_E_IMMUTABLE_FLAGS_SET Loskoppelen is onmogelijk omdat de profiler onveranderbare vlaggen bij het opstarten instelt. Loskoppelen is niet geprobeerd; de profiler is nog steeds volledig gekoppeld.
CORPROF_E_IRREVERSIBLE_INSTRUMENTATION_PRESENT Loskoppelen is onmogelijk omdat de profiler ge instrumenteerde CIL-code (Common Intermediate Language) of ingevoegde enter/leave haken gebruikt. Loskoppelen is niet geprobeerd; de profiler is nog steeds volledig gekoppeld.

Opmerking Instrumented CIL is code die wordt geleverd door de profiler met behulp van de methode SetILFunctionBody .
CORPROF_E_RUNTIME_UNINITIALIZED De runtime is nog niet geïnitialiseerd in de beheerde toepassing. (Dat wil gezegd, de runtime is niet volledig geladen.) Deze foutcode kan worden geretourneerd wanneer loskoppeling wordt aangevraagd in de methode ICorProfilerCallback van de profiler ::Initialize .
CORPROF_E_UNSUPPORTED_CALL_SEQUENCE RequestProfilerDetach werd op een niet-ondersteund tijdstip aangeroepen. Dit gebeurt als de methode wordt aangeroepen op een beheerde thread, maar niet vanuit een ICorProfilerCallback-methode of vanuit een ICorProfilerCallback-methode die geen garbagecollection tolereert. Zie CORPROF_E_UNSUPPORTED_CALL_SEQUENCE HRESULT voor meer informatie.

Opmerkingen

Tijdens de loskoppelprocedure controleert de thread (de thread die specifiek is gemaakt voor het loskoppelen van de profiler) af en toe of alle threads de code van de profiler hebben afgesloten. De profiler moet een schatting geven van hoe lang dit moet duren via de dwExpectedCompletionMilliseconds parameter. Een goede waarde om te gebruiken is de typische hoeveelheid tijd die de profiler binnen een bepaalde ICorProfilerCallback* methode besteedt. Deze waarde mag niet minder dan de helft van de maximale tijd zijn die de profiler verwacht te besteden.

De loskoppelthread gebruikt dwExpectedCompletionMilliseconds om te bepalen hoe lang moet worden geslapen voordat wordt gecontroleerd of de callback-code van profiler uit alle stacks is gehaald. Hoewel de details van het volgende algoritme kunnen veranderen in toekomstige releases van de CLR, wordt er één manier dwExpectedCompletionMilliseconds weergegeven wanneer wordt bepaald wanneer het veilig is om de profiler te laden. De loskoppeldraad slaapt eerst voor dwExpectedCompletionMilliseconds milliseconden. Als na het ontwaken uit de slaapstand de CLR vindt dat de callback-code van profiler nog steeds aanwezig is, slaapt de loskoppelthread opnieuw, deze keer gedurende twee milliseconden dwExpectedCompletionMilliseconds . Als na het ontwaken uit deze tweede slaapstand de loskoppelthread vindt dat de callback-code van profiler nog steeds aanwezig is, slaapt deze 10 minuten voordat u het opnieuw controleert. De loskoppelthread wordt elke 10 minuten opnieuw gecontroleerd.

Als de profiler opgeeft dwExpectedCompletionMilliseconds als 0 (nul), gebruikt de CLR een standaardwaarde van 5000, wat betekent dat deze na 5 seconden een controle uitvoert, opnieuw na 10 seconden en vervolgens om de 10 minuten daarna.

Vereisten

Platformen: Zie Systeemvereisten.

Koptekst: CorProf.idl, CorProf.h

Bibliotheek: CorGuids.lib

.NET Framework-versies: beschikbaar sinds 4

Zie ook