CriticalHandle.ReleaseHandle Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Türetilmiş bir sınıfta geçersiz kılındığında, tanıtıcıyı serbest bırakabilmek için gereken kodu yürütür.
protected:
abstract bool ReleaseHandle();
protected abstract bool ReleaseHandle();
abstract member ReleaseHandle : unit -> bool
Protected MustOverride Function ReleaseHandle () As Boolean
Döndürülenler
true tanıtıcı başarıyla serbest bırakılırsa; aksi takdirde, yıkıcı bir hata durumunda , false. Bu durumda bir releaseHandleFailed Yönetilen Hata Ayıklama Yardımcısı oluşturur.
Açıklamalar
ReleaseHandle veya Dispose yöntemine yalnızca bir çağrı yapıldığından emin olmak için uygun eşitleme mekanizmaları kullanmanız koşuluyla yöntemin Close yalnızca bir kez çağrılacağı garanti edilir.
ReleaseHandle veya IsClosed özelliği ise IsInvalidtrueyöntemi çağrılmaz. Tanıtıcıyı boşaltmak için gereken tüm kodları yürütmek için türetilmiş sınıflarınızda CriticalHandle bu yöntemi uygulayın. işlevinden CriticalHandle biri kaynak sızıntılarının önlenmesini garanti etmek olduğundan, uygulamanızdaki ReleaseHandle kod hiçbir zaman başarısız olmamalıdır. Atık toplayıcı, aynı anda atık olarak toplanan nesneler için normal sonlandırıcılar çalıştırıldıktan sonra çağırır ReleaseHandle ve kaynakların bunu çağırmasını ve devam ederken kesintiye uğramayacağını garanti eder. Bu yöntem, örnek oluşturma zamanında (statik olarak belirlenebilir çağrı grafiğindeki tüm yöntemlerle birlikte) kısıtlanmış yürütme bölgesi (CER) olarak hazırlanacaktır. Bu, iş parçacığı durdurma kesmelerini engellese de, geçersiz kılınan ReleaseHandle yönteminizde hata yolları eklememeye dikkat etmeniz gerekir. Özellikle, özniteliğini ReliabilityContractAttribute içinden ReleaseHandleçağırdığınız tüm yöntemlere uygulayın. Çoğu durumda bu kod şu şekilde olmalıdır:
ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)
Buna ek olarak, basit temizleme için (örneğin, bir dosya tanıtıcısında Windows API'sini CloseHandle çağırmak) tek platform çağırma çağrısının dönüş değerini de de kontrol edebilirsiniz. Karmaşık temizleme için, çok sayıda program mantığınız ve bazıları başarısız olabilecek birçok yöntem çağrınız olabilir. Program mantığınızda bu servis taleplerinin her biri için geri dönüş kodu olduğundan emin olmanız gerekir.
ReleaseHandle Yöntemi herhangi bir nedenle döndürürsefalse, bir releaseHandleFailed Yönetilen Hata Ayıklama Yardımcısı oluşturur.