Aracılığıyla paylaş


CriticalHandle.ReleaseHandle Yöntem

Tanım

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

truetanı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 düzgün 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ılmayacak. 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şlevlerinden CriticalHandle biri kaynak sızıntılarını önlemeyi 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 çağırmak için kaynakları garanti eder ve devam ederken kesintiye uğramaz. 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ırlanır. Bu, iş parçacığı durdurma kesmelerini engellese de, geçersiz kılınan ReleaseHandle yönteminizde hata yolları eklememeye dikkat etmelisiniz. Özellikle, özniteliğini ReliabilityContractAttribute içinden ReleaseHandleçağırdığınız herhangi bir yönteme 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ı için dönüş değerini de de kontrol edebilirsiniz. Karmaşık temizleme için çok fazla 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 bulunduğundan emin olmanız gerekir.

ReleaseHandle Yöntem herhangi bir nedenle döndürürse falsereleaseHandleFailed Yönetilen Hata Ayıklama Yardımcısı oluşturur.

Şunlara uygulanır

Ayrıca bkz.