ChangeMonitor Klasse

Definition

Stellt eine Basisklasse für einen abgeleiteten benutzerdefinierten Typ bereit, der Wechsel in den Zustand der Daten überwacht, auf den ein Cacheelement angewiesen ist.Provides a base class for a derived custom type that monitors changes in the state of the data which a cache item depends on.

public ref class ChangeMonitor abstract : IDisposable
public abstract class ChangeMonitor : IDisposable
type ChangeMonitor = class
    interface IDisposable
Public MustInherit Class ChangeMonitor
Implements IDisposable
Vererbung
ChangeMonitor
Abgeleitet
Implementiert

Hinweise

Die ChangeMonitor-Klasse wird als Basisklasse für abgeleitete Monitor Klassen verwendet, die auf bestimmte Cache Implementierungen spezialisiert sind.The ChangeMonitor class is used as the base class for derived monitor classes that are specialized for particular cache implementations. Eine ChangeMonitor Instanz überwacht Änderungen des Zustands von Daten, von denen ein Cache Element abhängt.A ChangeMonitor instance monitors changes in the state of data which a cache item depends on. Beispielsweise kann es sich bei dem Element um eine Datei oder eine Daten Entität handeln, deren Inhalt zwischengespeichert wird.For example, the item can be a file or data entity whose contents are cached. Wenn die Datei oder die Daten Entität aktualisiert wird, muss auch der zugehörige Cache Eintrag geändert werden.If the file or data entity is updated, the associated cache entry must be changed also. Zu den allgemeinen Elementen, die überwacht werden können, gehören Daten Entitäten (z. b. Datenbankfelder, Werte, Zeilen oder Tabellen), ein weiterer Cache Eintrag und Dateien und Dateiattribute.Common items that can be monitored include data entities (such as database fields, values, rows, or tables), another cache entry, and files and file attributes.

Eine Abhängigkeits Änderung ist eine Änderung des Zustands einer Abhängigkeit.A dependency change is a change in the state of a dependency. In einer typischen Cache Implementierung führt der Cache die erforderliche Aktion aus, wenn eine ChangeMonitor Instanz den Cache darüber benachrichtigt, dass sich eine Abhängigkeit geändert hat, wie z. b. die ungülgigkeit des eingefügten Cache Eintrags.In a typical cache implementation, after a ChangeMonitor instance notifies the cache that a dependency has changed, the cache performs the required action, such as invalidating the inserted cache entry.

Abgeleitete ChangeMonitor Klassen können angepasst werden, um Abhängigkeitsänderungen für bestimmte unterschiedliche Datenspeicher zu überwachen.Derived ChangeMonitor classes can be customized to monitor dependency changes for specific different data stores. Beispielsweise gibt es Cache Implementierungen für ein Dateisystem, physischen Arbeitsspeicher oder eine Datenbank.For example, there are cache implementations for a file system, physical memory, or a database. Die ChangeMonitor-Klasse untersucht Änderungen, die außerhalb des Caches erfolgen, und benachrichtigt dann den Cache, dass Änderungen aufgetreten sind.The ChangeMonitor class examines changes that occur outside the cache, and then alerts the cache that changes have occurred.

Die .NET Framework.NET Framework umfasst die folgenden Klassen, die von ChangeMonitor Klasse abgeleitet werden:The .NET Framework.NET Framework includes the following classes that derive from ChangeMonitor class:

Jede dieser Klassen funktioniert mit unterschiedlichen Abhängigkeits Typen.Each of these classes works with different types of dependencies. Beispielsweise überwacht die abgeleitete FileChangeMonitor-Klasse Änderungen an einem Cache für Dateisystem Daten (Dateien und Ordner), von denen das Cache Element abhängig ist.For example, the derived FileChangeMonitor class monitors changes to a cache for file system data (files and folders) that the cache item depends on.

Hinweise für Ausführende

Wenn Sie eine benutzerdefinierte Cache Implementierung oder einen abgeleiteten Änderungs Monitortyp erstellen, müssen Sie bestimmte Richtlinien befolgen.If you create a custom cache implementation or a derived change monitor type, you must follow certain guidelines. In der folgenden Liste sind diese Richtlinien zusammengefasst.The following list summarizes these guidelines. Weitere Informationen finden Sie in der Dokumentation zu einzelnen Methoden oder Eigenschaften.For more information, see the documentation for individual methods or properties.

-Der Konstruktor einer abgeleiteten Klasse muss die UniqueId-Eigenschaft festlegen, die Überwachung starten und InitializationComplete()-Methode aufzurufen, bevor die Methode zurückgibt.- The constructor of a derived class must set the UniqueId property, begin monitoring, and call InitializationComplete() method before the method returns. Wenn ein Konstruktor während der Konstruktion einen Fehler feststellt und Ressourcen verwerfen muss, kann der Konstruktor nur die Dispose Überladung aufrufen, nachdem die InitializationComplete()-Methode aufgerufen wurde, da die Dispose Überladung eine InvalidOperationException Ausnahme auslöst, wenn die Initialisierung nicht abgeschlossen wird.If a constructor encounters an error during constructions and must have to dispose of resources, the constructor can only call the Dispose overload after the InitializationComplete() method is called because the Dispose overload will throw an InvalidOperationException exception if initialization is not completed.

-Wenn in den Daten, die überwacht werden, Änderungen auftreten, bevor die Initialisierung beendet ist, muss der Konstruktor die OnChanged(Object)-Methode aufrufen, bevor die InitializationComplete()-Methode aufgerufen wird.- If changes occur in the data that is being monitored before initialization is complete, the constructor must call the OnChanged(Object) method before calling the InitializationComplete() method.

-Nachdem ein abgeleiteter ChangeMonitor Typ instanziiert wurde, müssen Sie den Monitor in eine benutzerdefinierte ObjectCache Implementierung einfügen.- After a derived ChangeMonitor type is instantiated, you must insert the monitor into a custom ObjectCache implementation. Wenn Sie den Änderungs Monitor noch nicht verwendet haben, können Sie die Dispose-Methode abrufen.Or if you are finished using the change monitor, call the Dispose method.

-Nachdem eine ChangeMonitor Instanz in eine ObjectCache Implementierung eingefügt wurde, muss die ObjectCache Instanz den Änderungs Monitor verwerfen.- After a ChangeMonitor instance is inserted into a ObjectCache implementation, the ObjectCache instance require that the change monitor is disposed. Auch wenn die Einfügung ungültig ist und eine Ausnahme verursacht, muss die ObjectCache Implementierung die Dispose-Überladung aufrufen.Even if the insertion is invalid and causes an exception, the ObjectCache implementation must call the Dispose overload.

-Nachdem ein abgeleiteter Änderungs Monitor in einen Cache eingefügt wurde, muss die ObjectCache Implementierung NotifyOnChanged(OnChangedCallback)aufrufen, indem ein OnChangedCallback-Objekt übergeben wird.- After a derived change monitor is inserted into a cache, the ObjectCache implementation must call NotifyOnChanged(OnChangedCallback), by passing a OnChangedCallback object. Die NotifyOnChanged(OnChangedCallback)-Methode kann nur einmal aufgerufen werden.The NotifyOnChanged(OnChangedCallback) method can be called only one time. Wenn bereits eine Abhängigkeits Änderung aufgetreten ist, wird die OnChangedCallback Instanz sofort aufgerufen, wenn NotifyOnChanged(OnChangedCallback) aufgerufen wird.If a dependency change has already occurred, the OnChangedCallback instance will be called immediately when NotifyOnChanged(OnChangedCallback) is called. Andernfalls wird die OnChangedCallback Instanz nur einmal aufgerufen.Otherwise, the OnChangedCallback instance will be called only one time. Dieser einmalige Aufruf tritt auf, wenn die OnChanged(Object)-Methode aufgerufen wird, weil die ChangeMonitor Instanz eine Änderung erkannt hat oder wenn die Dispose()-Methode auf dem ChangeMonitoraufgerufen wird, je nachdem, welcher Wert zuerst auftritt.This one time call occurs either when the OnChanged(Object) method is called because the ChangeMonitor instance detected a change, or when the Dispose() method is called on the ChangeMonitor, whichever occurs first.

-Die OnChangedCallback Instanz, die von einer ObjectCache-Implementierung bereitgestellt wird, sollte den zugehörigen Cache Eintrag entfernen und einen Grund angeben, indem die DependencyChanged-Enumeration verwendet wird.- The OnChangedCallback instance that is provided by an ObjectCache implementation should remove the associated cache entry and specify a reason by using the DependencyChanged enumeration.

-Eine ChangeMonitor Instanz kann die OnChanged(Object)-Methode aufrufen, bevor eine Cache Implementierung NotifyOnChanged(OnChangedCallback)-Methode oder nach aufgerufen hat.- A ChangeMonitor instance can call the OnChanged(Object) method either before a cache implementation has called NotifyOnChanged(OnChangedCallback) method or after. Wenn die OnChanged(Object)-Methode aufgerufen wird, bevor NotifyOnChanged(OnChangedCallback) aufgerufen wird, benachrichtigt die Basis ChangeMonitor Implementierung den Cache, dass diese aufgetreten ist, und löst den Rückruf aus, der sofort an NotifyOnChanged(OnChangedCallback) übermittelt wird, wenn NotifyOnChanged(OnChangedCallback) aufgerufen wird.If the OnChanged(Object) method is called before NotifyOnChanged(OnChangedCallback) is called, the base ChangeMonitor implementation will notify the cache that this has occurred and will trigger the callback to be passed to NotifyOnChanged(OnChangedCallback) immediately when NotifyOnChanged(OnChangedCallback) is invoked. Alle Zustandsdaten, die an die OnChanged(Object)-Methode übermittelt werden, werden vom Änderungs Monitor gespeichert und anschließend an die NotifyOnChanged(OnChangedCallback)-Methode übermittelt, wenn die NotifyOnChanged(OnChangedCallback)-Methode aufgerufen wird.Any state data that is passed to the OnChanged(Object) method is saved by the change monitor and subsequently passed to the NotifyOnChanged(OnChangedCallback) method when the NotifyOnChanged(OnChangedCallback) method is invoked.

-Ein Änderungs Monitor muss die Dispose(Boolean)-Methode implementieren.- A change monitor must implement the Dispose(Boolean) method. Weitere Informationen finden Sie in der Dokumentation zur Dispose(Boolean)-Methode.For more information, see the Dispose(Boolean) method documentation.

-Die Dispose()-Methoden Überladung muss aufgerufen werden, um die ChangeMonitor Instanz zu verwerfen.- The Dispose() method overload must be called to dispose of the ChangeMonitor instance. Die Regeln zum Aufrufen von "verwerfen" lauten wie folgt:The rules for calling Dispose are as follows: -Bevor ein Element in den Cache eingefügt wird, liegt es in der Verantwortung des Aufrufers, eine ChangeMonitor Instanz zu verwerfen.- Before an item is inserted into the cache, it is the responsibility of caller to dispose of a ChangeMonitor instance.

-Sobald die Cache Elemente und die ChangeMonitor Instanzen, die ihr zugeordnet sind, an einen Cache übermittelt werden, muss der cacheimplementierer sicherstellen, dass die Dispose-Methode aufgerufen wird, selbst wenn beim Einfügen ein Fehler auftritt.- Once cache item and the ChangeMonitor instances that are associated with it are passed to a cache, the cache implementer must make sure that the Dispose method is called, even if the insert fails.

-Nachdem ein Element und die zugehörigen ChangeMonitor Instanzen an einen Cache übergeben wurden, darf der Aufrufer die Abhängigkeit nicht verwerfen, da der Aufruf beim Aufrufen der Dispose Methode so behandelt wird, als ob sich die Abhängigkeit geändert hat.- After an item and its associated ChangeMonitor instances are passed to a cache, the caller must not dispose the dependency because when the Dispose method is called, the call is treated as if the dependency has changed. Folglich wird die OnChanged(Object)-Methode automatisch aufgerufen.As a result, the OnChanged(Object) method is automatically invoked.

Wenn diese Regeln berücksichtigt werden, muss die Dispose Methode auf eine der folgenden Weisen aufgerufen werden:- Taking these rules into consideration, the Dispose method must be called in one of the following ways: -Benutzer müssen die Dispose()-Methoden Überladung aufrufen, wenn Sie festlegen, dass die abgeleitete Change-Monitor-Instanz nicht in einen Cache eingefügt werden soll.- Users must call the Dispose() method overload if they decide not to insert the derived change-monitor instance into a cache.

Wenn die Implementierung versucht, die Change-Monitor-Instanz in einen Objekt Cache einzufügen, die Einfügung jedoch fehlschlägt, ist die Cache Implementierung für das Aufrufen der Dispose() Überladung verantwortlich.- If the implementation tries to insert the change-monitor instance into an object cache but the insertion fails, the cache implementation is responsible for calling the Dispose() overload. Wenn beim Einfügeversuch eine Ausnahme ausgelöst wird, muss die Cache Implementierung alle zugeordneten Abhängigkeiten verwerfen.When the insertion attempt causes an exception, the cache implementation must dispose of any associated dependencies.

-Wenn der Cache Eintrag entfernt wird, muss die Cache Implementierung auch die Abhängigkeit verwerfen.- If the cache entry is removed, the cache implementation must also dispose of the dependency.

-Die interne Implementierung der OnChanged(Object)-Methode ruft automatisch die Dispose-Methode auf, nachdem Sie einen Rückruf aufgerufen hat, der über NotifyOnChanged(OnChangedCallback)registriert wird.- The internal implementation of the OnChanged(Object) method automatically calls the Dispose method after it calls a callback that is registered through NotifyOnChanged(OnChangedCallback).


Dieser automatische Rückruf der verwerfen-Methode während des auslösenden Ereignisses tritt nur auf, wenn die Initialisierung der ChangeMonitor Instanz zuvor abgeschlossen wurde.This automatic call to the dispose method during the event firing only occurs if the initialization of the ChangeMonitor instance was previously completed.

Wenn der Konstruktor eines abgeleiteten Änderungs Monitors die InitializationComplete()-Methode aufruft und sich der Status des Änderungs Monitors bereits geändert hat (d. h., der Status, der überwacht wird, während der Konstruktor noch aktiv war), wird der Änderungs Monitor von der InitializationComplete() Methode automatisch verworfen.When a derived change monitor's constructor calls the InitializationComplete() method, if the state of the change monitor has already changed (that is, the state that is monitored already changed when the constructor was still active) then the InitializationComplete() method will automatically dispose of the change monitor. -Die HasChanged-Eigenschaft wird auf true festgelegt, nachdem die OnChanged(Object)-Methode von der abgeleiteten Change-Monitor-Instanz aufgerufen wurde, unabhängig davon, ob ein OnChangedCallback Objekt durch einen Aufruf der NotifyOnChanged(OnChangedCallback)-Methode festgelegt wurde oder nicht.- The HasChanged property is set to true after the OnChanged(Object) method is called by the derived change-monitor instance, regardless of whether a OnChangedCallback object has been set by a call to the NotifyOnChanged(OnChangedCallback) method or not.

Konstruktoren

ChangeMonitor()

Initialisiert eine neue Instanz der ChangeMonitor-Klasse.Initializes a new instance of the ChangeMonitor class. Dieser Konstruktor wird von Konstruktoren in abgeleiteten Klassen aufgerufen, um die Basisklasse zu initialisieren.This constructor is called from constructors in derived classes to initialize the base class.

Eigenschaften

HasChanged

Ruft einen Wert ab, der angibt, dass der von der ChangeMonitor-Klasse überwachte Zustand geändert wurde.Gets a value that indicates that the state that is monitored by the ChangeMonitor class has changed.

IsDisposed

Ruft einen Wert ab, der angibt, dass die abgeleitete Instanz einer ChangeMonitor-Klasse freigegeben wird.Gets a value that indicates that the derived instance of a ChangeMonitor class is disposed.

UniqueId

Ruft einen Wert ab, der die ChangeMonitor-Klasseninstanz darstellt.Gets a value that represents the ChangeMonitor class instance.

Methoden

Dispose()

Gibt alle von der aktuellen Instanz der ChangeMonitor-Klasse verwendeten Ressourcen frei.Releases all resources that are used by the current instance of the ChangeMonitor class.

Dispose(Boolean)

Gibt alle verwalteten und nicht verwalteten Ressourcen und alle Verweise auf die ChangeMonitor-Instanz frei.Releases all managed and unmanaged resources and any references to the ChangeMonitor instance. Diese Überladung muss von abgeleiteten Änderungsüberwachungsklassen implementiert werden.This overload must be implemented by derived change-monitor classes.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.Determines whether the specified object is equal to the current object.

(Geerbt von Object)
GetHashCode()

Dient als die Standard-HashfunktionServes as the default hash function.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Geerbt von Object)
InitializationComplete()

Wird vom Konstruktor abgeleiteter Klassen aufgerufen, um anzugeben, dass die Initialisierung abgeschlossen ist.Called from the constructor of derived classes to indicate that initialization is finished.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Geerbt von Object)
NotifyOnChanged(OnChangedCallback)

Wird von Cacheimplementierungen aufgerufen, um einen Rückruf zu registrieren und über den ObjectCache-Delegaten eine OnChangedCallback-Instanz zu benachrichtigen, wenn sich eine Abhängigkeit geändert hat.Called by Cache implementers to register a callback and notify an ObjectCache instance through the OnChangedCallback delegate when a dependency has changed.

OnChanged(Object)

Wird von abgeleiteten Klassen aufgerufen, um das Ereignis auszulösen, wenn sich eine Abhängigkeit ändert.Called by derived classes to raise the event when a dependency changes.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Geerbt von Object)

Gilt für:

Threadsicherheit

Dieser Typ ist threadsicher.This type is thread safe.

Siehe auch