Aracılığıyla paylaş


ICorProfilerInfo3::RequestProfilerDetach Yöntemi

Çalışma zamanına profil oluşturucuyu ayırmasını sağlar.

Sözdizimi

HRESULT RequestProfilerDetach(
   [in] DWORD    dwExpectedCompletionMilliseconds);

Parametreler

dwExpectedCompletionMilliseconds [in] Ortak dil çalışma zamanının (CLR) profil oluşturucuyu kaldırmanın güvenli olup olmadığını denetlemeden önce milisaniye cinsinden beklemesi gereken süre.

Dönüş Değeri

Bu yöntem, aşağıdaki belirli HRESULTs ve yöntem hatasını gösteren HRESULT hatalarını döndürür.

HRESULT Açıklama
S_OK Ayırma isteği geçerli ve ayırma yordamı artık başka bir iş parçacığında devam ediyor. Ayırma işlemi tam olarak tamamlandığında bir ProfilerDetachSucceeded olay verilir.
E_CORPROF_E_CALLBACK3_REQUIRED Profil oluşturucu, ayırma işlemini desteklemek için uygulaması gereken ICorProfilerCallback3 arabirimi için IUnknown::QueryInterface girişiminde başarısız oldu. Ayırma denenmedi.
CORPROF_E_IMMUTABLE_FLAGS_SET Profil oluşturucu başlangıçta sabit bayraklar ayarladığından ayırma imkansızdır. Ayırma denenmedi; profil oluşturucu hala tamamen bağlı.
CORPROF_E_IRREVERSIBLE_INSTRUMENTATION_PRESENT Profil oluşturucu tarafından kullanılan ortak ara dil (CIL) kodu veya eklenen enter/leave kancalar kullanıldığından ayırma mümkün değildir. Ayırma denenmedi; profil oluşturucu hala tamamen bağlı.

Not İzlemeli CIL, SetILFunctionBody yöntemi kullanılarak profil oluşturucu tarafından sağlanan koddur.
CORPROF_E_RUNTIME_UNINITIALIZED Yönetilen uygulamada çalışma zamanı henüz başlatılmadı. (Yani, çalışma zamanı tam olarak yüklenmemiş.) Profil oluşturucu geri çağırmasının ICorProfilerCallback::Initialize yönteminde ayırma istendiğinde bu hata kodu döndürülebilir.
CORPROF_E_UNSUPPORTED_CALL_SEQUENCE RequestProfilerDetach desteklenmeyen bir zamanda çağrıldı. Yöntem yönetilen bir iş parçacığında çağrılır ancak bir ICorProfilerCallback yönteminden veya çöp toplamayı tolere edemeyen bir ICorProfilerCallback yönteminin içinden çağrılmazsa bu durum oluşur. Daha fazla bilgi için bkz . HRESULT CORPROF_E_UNSUPPORTED_CALL_SEQUENCE.

Açıklamalar

Ayırma yordamı sırasında, ayırma iş parçacığı (profil oluşturucuyu ayırmak için özel olarak oluşturulan iş parçacığı) zaman zaman tüm iş parçacıklarının profil oluşturucunun kodundan çıkıp çıkmadığını denetler. Profil oluşturucu, bunun parametresi üzerinden ne kadar süreceğine dwExpectedCompletionMilliseconds ilişkin bir tahmin sağlamalıdır. Kullanılacak iyi bir değer, profil oluşturucunun belirli ICorProfilerCallback* bir yöntem içinde harcadığı tipik süredir; bu değer, profil oluşturucunun harcamayı beklediği maksimum sürenin yarısından az olmamalıdır.

Ayırma iş parçacığı, profil oluşturucu geri çağırma kodunun tüm yığınlardan çıkarılıp çıkarılmadığını denetlemeden önce ne kadar süreyle uyku moduna geçmesi gerektiğine karar vermek için kullanır dwExpectedCompletionMilliseconds . ClR'nin gelecek sürümlerinde aşağıdaki algoritmanın ayrıntıları değişse de, profil oluşturucuyu kaldırmanın ne zaman güvenli olduğunu belirlerken tek bir yol dwExpectedCompletionMilliseconds gösterilebilir. Ayırma iş parçacığı ilk olarak milisaniyeler için dwExpectedCompletionMilliseconds uyku moduna alınır. Uyku modundan uyandıktan sonra CLR profil oluşturucu geri çağırma kodunun hala mevcut olduğunu bulursa, ayırma iş parçacığı bu kez iki kez dwExpectedCompletionMilliseconds milisaniye boyunca yeniden uyku moduna geçirilir. Bu ikinci uykudan uyandıktan sonra ayırma iş parçacığı profil oluşturucu geri çağırma kodunun hala mevcut olduğunu bulursa, yeniden denetlemeden önce 10 dakika boyunca uykuda kalır. Ayırma iş parçacığı 10 dakikada bir yeniden denetlenmeye devam eder.

Profil oluşturucu 0 (sıfır) olarak belirtiyorsa dwExpectedCompletionMilliseconds , CLR varsayılan 5000 değerini kullanır; bu da 5 saniye sonra, 10 saniye sonra yeniden ve bundan sonra 10 dakikada bir denetim gerçekleştireceği anlamına gelir.

Gereksinimler

Platformlar: Bkz. Sistem Gereksinimleri.

Üst bilgi: CorProf.idl, CorProf.h

Kitaplık: CorGuids.lib

.NET Framework Sürümleri: 4'ten beri kullanılabilir

Ayrıca bkz.