ICorProfilerInfo3::RequestProfilerDetach-metod
Instruerar körningen att koppla från profileraren.
Syntax
HRESULT RequestProfilerDetach(
[in] DWORD dwExpectedCompletionMilliseconds);
Parametrar
dwExpectedCompletionMilliseconds
[i] I millisekunder bör den gemensamma språkkörningen (CLR) vänta innan du kontrollerar om det är säkert att ta bort profileraren.
Returvärde
Den här metoden returnerar följande specifika HRESULT-fel samt HRESULT-fel som indikerar metodfel.
HRESULT | beskrivning |
---|---|
S_OK | Begäran om frånkoppling är giltig och avkopplingsproceduren fortsätter nu i en annan tråd. När frånkopplingen är helt klar utfärdas en ProfilerDetachSucceeded händelse. |
E_CORPROF_E_CALLBACK3_REQUIRED | Profileraren misslyckades med ett IUnknown::QueryInterface-försök för gränssnittet ICorProfilerCallback3 , som den måste implementera för att stödja åtgärden frånkoppling. Det gick inte att koppla från. |
CORPROF_E_IMMUTABLE_FLAGS_SET | Det går inte att koppla från eftersom profileraren ställer in oföränderliga flaggor vid start. Det gick inte att koppla från. profileraren fortfarande är helt ansluten. |
CORPROF_E_IRREVERSIBLE_INSTRUMENTATION_PRESENT | Det går inte att koppla från eftersom profileraren använde CIL-kod (Common Intermediate Language) eller infogade enter /leave krokar. Det gick inte att koppla från. profileraren fortfarande är helt ansluten.Obs! Instrumenterad CIL är kod som tillhandahålls av profileraren med metoden SetILFunctionBody . |
CORPROF_E_RUNTIME_UNINITIALIZED | Körningen har ännu inte initierats i det hanterade programmet. (Det vill: körningen har inte lästs in helt.) Den här felkoden kan returneras när avkoppling begärs i profiler-återanropets ICorProfilerCallback::Initialize-metod . |
CORPROF_E_UNSUPPORTED_CALL_SEQUENCE | RequestProfilerDetach anropades vid en tidpunkt som inte stöds. Detta inträffar om metoden anropas på en hanterad tråd men inte från en ICorProfilerCallback-metod eller från en ICorProfilerCallback-metod som inte tolererar en skräpinsamling. Mer information finns i CORPROF_E_UNSUPPORTED_CALL_SEQUENCE HRESULT. |
Kommentarer
Under avkopplingsproceduren kontrollerar den frånkopplade tråden (den tråd som skapats specifikt för att koppla från profileraren) ibland om alla trådar har lämnat profilerarens kod. Profileraren bör ange en uppskattning av hur lång tid detta ska ta genom parametern dwExpectedCompletionMilliseconds
. Ett bra värde att använda är den typiska tid som profileraren spenderar inom en viss ICorProfilerCallback*
metod. Det här värdet bör inte vara mindre än hälften av den maximala tid som profileraren förväntar sig att spendera.
Den frånkopplade tråden använder dwExpectedCompletionMilliseconds
för att bestämma hur länge du ska sova innan du kontrollerar om profilerarens återanropskod har poppats av alla staplar. Även om informationen om följande algoritm kan ändras i framtida versioner av CLR, illustrerar den ett sätt dwExpectedCompletionMilliseconds
som kan användas när du fastställer när det är säkert att ta bort profileraren. Den frånkopplade tråden försattes först i dwExpectedCompletionMilliseconds
millisekunder. Om CLR efter uppvaknandet från viloläget upptäcker att profilerarens återanropskod fortfarande finns, växlar den frånkopplade tråden igen, den här gången i två gånger dwExpectedCompletionMilliseconds
millisekunder. Om den frånkopplade tråden efter uppvaknandet från den här andra vilotiden fortfarande hittar att profileringskod fortfarande finns, ligger den i viloläge i 10 minuter innan den kontrolleras igen. Den frånkopplade tråden fortsätter att kontrolleras var 10:e minut.
Om profileraren dwExpectedCompletionMilliseconds
anger som 0 (noll) använder CLR ett standardvärde på 5 000, vilket innebär att den utför en kontroll efter 5 sekunder, igen efter 10 sekunder och sedan var 10:e minut därefter.
Krav
Plattformar: Se Systemkrav.
Rubrik: CorProf.idl, CorProf.h
Bibliotek: CorGuids.lib
.NET Framework-versioner: Finns sedan 4
Se även
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för