Aracılığıyla paylaş


ChangeMonitor.Dispose Yöntem

Tanım

Sınıfın geçerli örneği ChangeMonitor tarafından kullanılan tüm kaynakları serbest bırakır.

Aşırı Yüklemeler

Name Description
Dispose()

Sınıfın geçerli örneği ChangeMonitor tarafından kullanılan tüm kaynakları serbest bırakır.

Dispose(Boolean)

Yönetilen ve yönetilmeyen tüm kaynakları ve örneğe yapılan ChangeMonitor başvuruları serbest bırakır. Bu aşırı yükleme, türetilmiş değişiklik izleyici sınıfları tarafından uygulanmalıdır.

Açıklamalar

Dispose yöntemi örneği ve ilgili kaynakları serbest bırakmak ChangeMonitor için kullanılır. Türetilmiş değişiklik izleyici sınıflarının önemli yaşam döngüsü olaylarıyla (başlatma gibi) elden çıkarma işlemini koordine etmek ve örneğin çöp toplanabilmesi için örneği serbest bırakmak ChangeMonitor için ortak Dispose yöntem çağrılır. Dispose yöntemi, yönetilen ve yönetilmeyen kaynaklarını atmak için türetilmiş değişiklik izleyici sınıfları tarafından uygulanır.

Dispose()

Kaynak:
ChangeMonitor.cs
Kaynak:
ChangeMonitor.cs
Kaynak:
ChangeMonitor.cs
Kaynak:
ChangeMonitor.cs

Sınıfın geçerli örneği ChangeMonitor tarafından kullanılan tüm kaynakları serbest bırakır.

public:
 virtual void Dispose();
public void Dispose();
abstract member Dispose : unit -> unit
override this.Dispose : unit -> unit
Public Sub Dispose ()

Uygulamalar

Özel durumlar

Temel Dispose() yöntemi çağıran türetilmiş change-monitor sınıfında başlatma tamamlanmadı.

Açıklamalar

Dispose yöntemi, türetilmiş sınıfların yöntemini yalnızca bir kez çağırır Dispose ve ilk kez çağrılır. Yöntemine yapılan sonraki çağrıların Dispose hiçbir etkisi yoktur. yöntemi çağrıldıktan IsDisposed sonra özelliği olarak trueayarlanır.

Bir Dispose örneği atmak ChangeMonitor için aşırı yükleme çağrılmalıdır. Dispose yöntemini çağırmak için kurallar şunlardır:

  • Bir öğe önbelleğe eklenmeden önce, bir ChangeMonitor örneği atmak çağıranın sorumluluğundadır.

  • Önbellek öğesi ve ChangeMonitor onunla ilişkilendirilmiş örnekler bir önbelleğe geçirildikten sonra, ekleme başarısız olsa bile çağrıldığından Dispose emin olması gereken önbellek uygulayıcısı.

  • Bir öğe ve ilişkili ChangeMonitor örnekleri önbelleğe geçirildikten sonra, çağıranın bağımlılığı atmaması gerekir çünkü yöntem çağrıldığında Dispose , çağrı bağımlılık değişmiş gibi kabul edilir. Sonuç olarak yöntemi OnChanged otomatik olarak çağrılır.

  • Bu kurallar dikkate alındığında yöntemi Dispose aşağıdaki yollardan biriyle çağrılmalıdır:

    • Kullanıcılar türetilmiş değişiklik izleyicisi örneğini önbelleğe eklememeye karar verirse yöntem aşırı yüklemesini çağırmalıdır Dispose .

    • Uygulama change-monitor örneğini Dispose bir nesne önbelleğine eklemeye çalışırsa ancak ekleme başarısız olursa önbellek uygulaması aşırı yüklemeyi çağırmaktan sorumludur. Ekleme girişimi özel duruma neden olduğunda, önbellek uygulamasının ilişkili bağımlılıkları atması gerekir.

    • Önbellek girdisi kaldırılırsa, önbellek uygulamasının da bağımlılığı atması gerekir.

yönteminin OnChanged iç uygulaması, yöntemi aracılığıyla NotifyOnChanged kaydedilen bir geri çağırma çağırdıktan sonra yöntemini otomatik olarak çağırırDispose.

Uyarı

Olay tetiklenirken bu otomatik atma işlemi yalnızca örneğin başlatılması ChangeMonitor daha önce tamamlandıysa gerçekleşir.

Türetilmiş bir değişiklik izleyicisinin oluşturucusunun InitializationComplete yöntemini çağırması durumunda, değişiklik izleyicisinin durumu zaten değişmişse (yani, oluşturucu hala etkinken izlenen durum zaten değişmişse) InitializationComplete yöntem değişiklik izleyicisini otomatik olarak atacaktır.

Uyarı

Kullanıcılar yöntemini çağırmamalıdır Dispose . Ancak, kullanıcıların yöntemini çağırmasını engelleyemezsiniz. Bu nedenle, bunu yaparlarsa yöntemi OnChanged çağrılır. Bu durumda, önbellek girdisine bağımlılık değişmiş gibi bildirilir.

Türetilmiş sınıfların yöntemi geçersiz kılmasını Dispose önlemek için yöntemi açık bir arabirim uygulaması değildir.

Ayrıca bkz.

Şunlara uygulanır

Dispose(Boolean)

Kaynak:
ChangeMonitor.cs
Kaynak:
ChangeMonitor.cs
Kaynak:
ChangeMonitor.cs
Kaynak:
ChangeMonitor.cs

Yönetilen ve yönetilmeyen tüm kaynakları ve örneğe yapılan ChangeMonitor başvuruları serbest bırakır. Bu aşırı yükleme, türetilmiş değişiklik izleyici sınıfları tarafından uygulanmalıdır.

protected:
 abstract void Dispose(bool disposing);
protected abstract void Dispose(bool disposing);
abstract member Dispose : bool -> unit
Protected MustOverride Sub Dispose (disposing As Boolean)

Parametreler

disposing
Boolean

true yönetilen ve yönetilmeyen kaynakları ve bir ChangeMonitor örneğe yapılan başvuruları serbest bırakmak; false yalnızca yönetilmeyen kaynakları serbest bırakmak için. Geçirildiğinde false , Dispose(Boolean) yöntemi bir finalizer iş parçacığı tarafından çağrılır ve dış yönetilen başvurular büyük olasılıkla artık geçerli değildir çünkü bunlar zaten çöp olarak toplanmıştır.

Açıklamalar

değerinin disposing değeri olduğunda true, tüm yönetilen ve yönetilmeyen kaynaklar atılır ve türetilmiş değişiklik izleyici örneğinin atık olarak toplanabilmesi için bu nesneye yapılan tüm başvurular serbest bırakılır. Temel Dispose yöntemin uygulanan Dispose yöntemi yalnızca bir kez çağıracağı garanti edilir.

Uygulayanlara Notlar

Bir değişiklik izleyicisinin Dispose(Boolean) değeri disposing olduğunda truetüm yönetilen ve yönetilmeyen kaynakları serbest bırakmak için aşırı yüklemeyi uygulaması gerekir. Dispose(Boolean) değeri true olan yöntem aşırı yüklemesi, örneğin ilk kez atılmasıyla yalnızca bir disposing kez çağrılır. Değişiklik izleyicisi Dispose(Boolean) aşırı yüklemeyi doğrudan çağırmamalıdır. Türetilmiş bir değişiklik izleyicisi, temel ChangeMonitor sınıfta genel parametresiz Dispose() yöntemini çağırabilir.

Alternatif olarak, değişiklik izleyicisi bir sonlandırıcı yöntemi uygulayabilir. Bu durumda, sonlandırıcı yöntemini çağırabilir Dispose(Boolean) ve değerini disposingfalsegeçirebilir. Ancak, bu genellikle gereksizdir. Bağımlılık değişikliklerini izleme genellikle değişiklik izleyicisi örneğine başvuru sağlayan bir hizmet tarafından gerçekleştirilir. Başvuru, örneğin çöp toplamasını engeller ve bu nedenle sonlandırıcı yöntemini gereksiz hale getirir. Bellek sızıntılarını önlemek için, bir bağımlılık değiştiğinde OnChanged(Object) yöntemi change-monitor örneğini atar (başlatma tamamlanmadığı sürece).

Şunlara uygulanır