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