ChangeMonitor Sınıf
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.
Bir önbellek öğesinin bağımlı olduğu veri durumundaki değişiklikleri izleyen türetilmiş bir özel tür için temel sınıf sağlar.
public ref class ChangeMonitor abstract : IDisposable
public abstract class ChangeMonitor : IDisposable
type ChangeMonitor = class
interface IDisposable
Public MustInherit Class ChangeMonitor
Implements IDisposable
- Devralma
-
ChangeMonitor
- Türetilmiş
- Uygulamalar
Açıklamalar
ChangeMonitor sınıfı, belirli önbellek uygulamaları için özelleştirilmiş türetilmiş izleyici sınıfları için temel sınıf olarak kullanılır. Örnek ChangeMonitor , bir önbellek öğesinin bağımlı olduğu veri durumundaki değişiklikleri izler. Örneğin, öğe içeriği önbelleğe alınmış bir dosya veya veri varlığı olabilir. Dosya veya veri varlığı güncelleştirildiyse, ilişkili önbellek girdisinin de değiştirilmesi gerekir. İzlenebilen yaygın öğeler arasında veri varlıkları (veritabanı alanları, değerler, satırlar veya tablolar gibi), başka bir önbellek girdisi ve dosyalar ve dosya öznitelikleri bulunur.
Bağımlılık değişikliği, bağımlılığın durumundaki bir değişikliktir. Tipik bir önbellek uygulamasında, bir ChangeMonitor örnek önbelleğin değiştirildiğini bildirirse önbellek, eklenen önbellek girişini geçersiz hale getirme gibi gerekli eylemi gerçekleştirir.
Türetilmiş ChangeMonitor sınıflar, belirli farklı veri depoları için bağımlılık değişikliklerini izlemek üzere özelleştirilebilir. Örneğin, bir dosya sistemi, fiziksel bellek veya veritabanı için önbellek uygulamaları vardır. ChangeMonitor sınıfı, önbelleğin dışında gerçekleşen değişiklikleri inceler ve sonra değişikliklerin gerçekleştiği önbelleği uyarır.
.NET Framework, sınıfından türetilen ChangeMonitor aşağıdaki sınıfları içerir:
Bu sınıfların her biri farklı bağımlılık türleriyle çalışır. Örneğin, türetilmiş FileChangeMonitor sınıf, önbellek öğesinin bağımlı olduğu dosya sistemi verileri (dosyalar ve klasörler) için önbellekteki değişiklikleri izler.
Uygulayanlara Notlar
Özel bir önbellek uygulaması veya türetilmiş bir değişiklik izleyicisi türü oluşturursanız, bazı yönergeleri izlemeniz gerekir. Aşağıdaki listede bu yönergeler özetlemektedir. Daha fazla bilgi için tek tek yöntemlerin veya özelliklerin belgelerine bakın.
Türetilmiş bir sınıfın oluşturucusunun yöntemi döndürmeden önce özelliğini ayarlaması UniqueId , izlemeyi başlatması ve yöntemini çağırması InitializationComplete() gerekir. Oluşturucu, yapılar sırasında bir hatayla karşılaşırsa ve kaynakları atması gerekiyorsa, oluşturucu yalnızca yöntem çağrıldıktan sonra InitializationComplete() aşırı yüklemeyi çağırabilir Dispose çünkü Dispose başlatma tamamlanmazsa aşırı yükleme bir InvalidOperationException özel durum oluşturur.
Başlatma tamamlanmadan önce izlenen verilerde değişiklikler olursa, oluşturucunun yöntemini çağırmadan önce yöntemini çağırması OnChanged(Object)InitializationComplete() gerekir.
Türetilmiş ChangeMonitor bir tür örneği eklendikten sonra izleyiciyi özel ObjectCache bir uygulamaya eklemeniz gerekir. Veya değişiklik izleyicisini kullanmayı tamamladıysanız yöntemini çağırın Dispose .
Bir uygulamaya örnek ChangeMonitor eklendikten ObjectCache sonra, değişiklik izleyicisinin ObjectCache atılması gerekir. Ekleme geçersiz olsa ve bir özel duruma neden olsa bile, ObjectCache uygulamanın aşırı yüklemeyi çağırması Dispose gerekir.
Türetilmiş bir değişiklik izleyicisi önbelleğe eklendikten sonra, ObjectCache uygulamanın bir OnChangedCallback nesnesi geçirerek çağrısı NotifyOnChanged(OnChangedCallback)yapması gerekir. NotifyOnChanged(OnChangedCallback) yöntemi yalnızca bir kez çağrılabilir. Bir bağımlılık değişikliği zaten oluştuysa, OnChangedCallback örnek çağrıldığında NotifyOnChanged(OnChangedCallback) hemen çağrılır. Aksi takdirde örnek OnChangedCallback yalnızca bir kez çağrılır. Bu tek seferlik çağrı, örnek bir değişiklik algıladığından OnChanged(Object)ChangeMonitor yöntem çağrıldığında veya yöntemin ilk gerçekleşen üzerinde ChangeMonitorçağrıldığında Dispose() gerçekleşir.
Bir OnChangedCallbackObjectCache uygulama tarafından sağlanan örnek, ilişkili önbellek girdisini kaldırmalı ve numaralandırmasını DependencyChanged kullanarak bir neden belirtmelidir.
Bir ChangeMonitor örnek, bir önbellek uygulaması yöntemi çağırmadan önce veya sonra yöntemini çağırabilir OnChanged(Object)NotifyOnChanged(OnChangedCallback) . OnChanged(Object) Yöntemi çağrılmadan önce NotifyOnChanged(OnChangedCallback) çağrılırsa, temel ChangeMonitor uygulama önbelleğe bunun gerçekleştiğini bildirir ve çağrıldığında NotifyOnChanged(OnChangedCallback) geri çağırmanın hemen geçirilmesini NotifyOnChanged(OnChangedCallback) tetikler. Yöntemine OnChanged(Object) geçirilen tüm durum verileri değişiklik izleyicisi tarafından kaydedilir ve ardından yöntem çağrıldığında yöntemine NotifyOnChanged(OnChangedCallback)NotifyOnChanged(OnChangedCallback) geçirilir.
Değişiklik izleyicisi Dispose(Boolean) yöntemini uygulamalıdır. Daha fazla bilgi için yöntem belgelerine Dispose(Boolean) bakın.
Örneği Dispose() atmak ChangeMonitor için yöntem aşırı yüklemesi çağrılmalıdır. Dispose çağrısı için kurallar aşağıdaki gibidir:
Bir öğe önbelleğe eklenmeden önce, bir örneği atmak çağıranın ChangeMonitor sorumluluğundadır.
Önbellek öğesi ve ChangeMonitor onunla ilişkili örnekler bir önbelleğe geçirildikten sonra, önbellek uygulayıcısı ekleme başarısız olsa bile yöntemin Dispose çağrıldığından emin olmalıdır.
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(Object) otomatik olarak çağrılır.
Bu kurallar dikkate alındığında, Dispose yöntemi 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 değişiklik izleyicisi örneğini bir nesne önbelleğine eklemeyi denerse ancak ekleme başarısız olursa, önbellek uygulaması aşırı yüklemeyi çağırmakla Dispose() sorumludur. Ekleme girişimi bir özel duruma neden olduğunda, önbellek uygulamasının ilişkili bağımlılıkları atması gerekir.
Önbellek girişi kaldırılırsa, önbellek uygulamasının da bağımlılığı atması gerekir.
yönteminin OnChanged(Object) iç uygulaması, aracılığıyla NotifyOnChanged(OnChangedCallback)kaydedilen bir geri çağırma çağırdıktan sonra yöntemini otomatik olarak çağırırDispose.
Not: Olay tetiklenirken dispose yöntemine yapılan bu otomatik çağrı 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.
-
HasChanged özelliği, bir nesnenin yöntemine OnChanged(Object)
true
yapılan bir çağrı NotifyOnChanged(OnChangedCallback) tarafından ayarlanıp ayarlanmadığına OnChangedCallback bakılmaksızın, türetilmiş change-monitor örneği tarafından yöntemi çağrıldıktan sonra olarak ayarlanır.
Oluşturucular
ChangeMonitor() |
ChangeMonitor sınıfının yeni bir örneğini başlatır. Bu oluşturucu, temel sınıfı başlatmak için türetilmiş sınıflardaki oluşturuculardan çağrılır. |
Özellikler
HasChanged |
Sınıfı tarafından ChangeMonitor izlenen durumun değiştiğini belirten bir değer alır. |
IsDisposed |
Bir sınıfın türetilmiş örneğinin atıldığını belirten bir ChangeMonitor değer alır. |
UniqueId |
Sınıf örneğini ChangeMonitor temsil eden bir değer alır. |
Yöntemler
Dispose() |
Sınıfını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. |
Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
GetType() |
Type Geçerli örneğini alır. (Devralındığı yer: Object) |
InitializationComplete() |
Başlatmanın tamamlandığını belirtmek için türetilmiş sınıfların oluşturucusundan çağrılır. |
MemberwiseClone() |
Geçerli Objectöğesinin sığ bir kopyasını oluşturur. (Devralındığı yer: Object) |
NotifyOnChanged(OnChangedCallback) |
Bir geri çağırmayı kaydetmek ve bir bağımlılık değiştiğinde OnChangedCallback temsilci aracılığıyla bir ObjectCache örneği bilgilendirmek için Önbellek uygulayıcıları tarafından çağrılır. |
OnChanged(Object) |
Bir bağımlılık değiştiğinde olayı tetikmek için türetilmiş sınıflar tarafından çağrılır. |
ToString() |
Geçerli nesneyi temsil eden dizeyi döndürür. (Devralındığı yer: Object) |
Şunlara uygulanır
İş Parçacığı Güvenliği
Bu güvenli iş parçacığı türüdür.