ChangeMonitor.Dispose Yöntem

Tanım

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

Aşırı Yüklemeler

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 ChangeMonitor yapılan 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 anahtar yaşam döngüsü olaylarıyla (başlatma gibi) bertaraf 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 izleme sınıfları tarafından uygulanır.

Dispose()

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

Başlatma, temel Dispose() yöntemi çağıran türetilmiş change-monitor sınıfında tamamlanmıyor.

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 bunun ç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ğırmakla sorumludur. Ekleme girişimi bir ö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 bağımlılığı da atması gerekir.

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

Not

Olay tetiklenirken bu otomatik atma işlemi yalnızca örneğin başlatması 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.

Not

Kullanıcılar yöntemini çağırmamalıdır Dispose . Ancak, kullanıcıların yöntemini çağırmasını engelleyemezsiniz. Bu nedenle, bu durumda OnChanged yöntemi ç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

Yönetilen ve yönetilmeyen tüm kaynakları ve örneğe ChangeMonitor yapılan 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 tüm 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 zaten çöp olarak toplandıklarından artık geçerli değildir.

Açıklamalar

Değerin 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 çöp 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 birlikte 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ş değişiklik izleyicisi, temel ChangeMonitor sınıfta public parameter-less 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 işlemi genellikle değişiklik izleme ö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 kılar. Bellek sızıntılarını önlemek için, 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