ChangeMonitor Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt eine Basisklasse für einen abgeleiteten benutzerdefinierten Typ bereit, der Wechsel in den Zustand der Daten überwacht, auf den ein Cacheelement angewiesen ist.
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 Überwachungsklassen verwendet, die für bestimmte Cacheimplementierungen spezialisiert sind. Eine ChangeMonitor -Instanz überwacht Änderungen im Zustand der Daten, von denen ein Cacheelement abhängt. Das Element kann z. B. eine Datei- oder Datenentität sein, deren Inhalt zwischengespeichert wird. Wenn die Datei- oder Datenentität aktualisiert wird, muss auch der zugeordnete Cacheeintrag geändert werden. Zu den gängigen Elementen, die überwacht werden können, gehören Datenentitäten (z. B. Datenbankfelder, Werte, Zeilen oder Tabellen), ein anderer Cacheeintrag sowie Dateien und Dateiattribute.
Eine Abhängigkeitsänderung ist eine Änderung des Zustands einer Abhängigkeit. In einer typischen Cacheimplementierung führt der Cache die erforderliche Aktion aus, nachdem eine ChangeMonitor -Instanz den Cache benachrichtigt hat, dass eine Abhängigkeit geändert wurde, z. B. den eingefügten Cacheeintrag ungültig zu machen.
Abgeleitete ChangeMonitor Klassen können angepasst werden, um Abhängigkeitsänderungen für bestimmte unterschiedliche Datenspeicher zu überwachen. Beispielsweise gibt es Cacheimplementierungen für ein Dateisystem, physischen Speicher oder eine Datenbank. Die ChangeMonitor -Klasse untersucht Änderungen, die außerhalb des Caches auftreten, und warnt dann den Cache, dass Änderungen aufgetreten sind.
Die .NET Framework enthält die folgenden Klassen, die von der -Klasse abgeleitet ChangeMonitor werden:
Jede dieser Klassen funktioniert mit unterschiedlichen Typen von Abhängigkeiten. Beispielsweise überwacht die abgeleitete FileChangeMonitor Klasse Änderungen an einem Cache für Dateisystemdaten (Dateien und Ordner), von denen das Cacheelement abhängt.
Hinweise für Ausführende
Wenn Sie eine benutzerdefinierte Cacheimplementierungen oder einen abgeleiteten Änderungsmonitortyp erstellen, müssen Sie bestimmte Richtlinien befolgen. In der folgenden Liste sind diese Richtlinien zusammengefasst. Weitere Informationen finden Sie in der Dokumentation zu einzelnen Methoden oder Eigenschaften.
– Der Konstruktor einer abgeleiteten Klasse muss die -Eigenschaft festlegen, mit der Überwachung beginnen und die UniqueId -Methode aufrufen, InitializationComplete() bevor die Methode zurückgegeben wird. Wenn ein Konstruktor während der Konstruktionen einen Fehler erkennt und Ressourcen verwerfen muss, kann der Konstruktor die Überladung nur Dispose aufrufen, nachdem die InitializationComplete() -Methode aufgerufen wurde, da die Dispose Überladung eine Ausnahme auslöst, wenn die InvalidOperationException Initialisierung nicht abgeschlossen ist.
– Wenn Änderungen an den Daten auftreten, die überwacht werden, bevor die Initialisierung abgeschlossen ist, muss der Konstruktor die OnChanged(Object) -Methode aufrufen, bevor die -Methode aufgerufen InitializationComplete() wird.
– Nachdem ein abgeleiteter ChangeMonitor Typ instanziiert wurde, müssen Sie den Monitor in eine benutzerdefinierte ObjectCache Implementierung einfügen. Wenn Sie die Verwendung des Änderungsmonitors abgeschlossen haben, rufen Sie die Dispose -Methode auf.
– Nachdem eine ChangeMonitor -Instanz in eine -Implementierung eingefügt ObjectCache wurde, erfordert die ObjectCache -Instanz, dass der Änderungsmonitor verworfen wird. Auch wenn die Einfügung ungültig ist und eine Ausnahme auslöst, muss die ObjectCache Implementierung die Dispose -Überladung aufrufen.
– Nachdem ein abgeleiteter Änderungsmonitor in einen Cache eingefügt wurde, muss die ObjectCache Implementierung NotifyOnChanged(OnChangedCallback) aufrufen, indem ein -Objekt übergeben OnChangedCallback wird. Die NotifyOnChanged(OnChangedCallback) -Methode kann nur einmal aufgerufen werden. Wenn bereits eine Abhängigkeitsänderung aufgetreten ist, wird die OnChangedCallback Instanz sofort aufgerufen, wenn aufgerufen NotifyOnChanged(OnChangedCallback) wird. Andernfalls wird die OnChangedCallback Instanz nur einmal aufgerufen. Dieser einmalige Aufruf tritt entweder auf, wenn die OnChanged(Object) -Methode aufgerufen wird, weil die ChangeMonitor -Instanz eine Änderung erkannt hat, oder wenn die Dispose() -Methode für den aufgerufen ChangeMonitor wird, je nachdem, was zuerst auftritt.
– Die OnChangedCallback -Instanz, die von einer -Implementierung bereitgestellt wird, ObjectCache sollte den zugeordneten Cacheeintrag entfernen und mithilfe der -Enumeration einen Grund DependencyChanged angeben.
– Eine ChangeMonitor -Instanz kann die OnChanged(Object) -Methode aufrufen, bevor eine Cacheimplementierungen die -Methode aufgerufen haben NotifyOnChanged(OnChangedCallback) oder danach. Wenn die OnChanged(Object) -Methode aufgerufen wird, bevor NotifyOnChanged(OnChangedCallback) aufgerufen wird, benachrichtigt die ChangeMonitor Basisimplementierungen den Cache, dass dies aufgetreten ist, und löst den Rückruf aus, der sofort an übergeben NotifyOnChanged(OnChangedCallback) wird, wenn NotifyOnChanged(OnChangedCallback) aufgerufen wird. Alle Zustandsdaten, die an die -Methode übergeben werden, OnChanged(Object) werden vom Änderungsmonitor gespeichert und anschließend an die NotifyOnChanged(OnChangedCallback) -Methode übergeben, wenn die NotifyOnChanged(OnChangedCallback) -Methode aufgerufen wird.
– Ein Änderungsmonitor muss die Dispose(Boolean) -Methode implementieren. Weitere Informationen finden Sie in der Dokumentation zur Dispose(Boolean)-Methode.
– Die Dispose() Methodenüberladung muss aufgerufen werden, um die Instanz zu ChangeMonitor verwerfen. Die Regeln zum Aufrufen von Dispose sind wie folgt: – Bevor ein Element in den Cache eingefügt wird, liegt es in der Verantwortung des Aufrufers, eine -Instanz zu ChangeMonitor löschen.
– Sobald das Cacheelement und die ChangeMonitor zugeordneten Instanzen an einen Cache übergeben wurden, muss die Cache implementer sicherstellen, dass die Dispose -Methode aufgerufen wird, auch wenn die Einfügung fehlschlägt.
– Nachdem ein Element und die ChangeMonitor zugehörigen Instanzen an einen Cache übergeben wurden, darf der Aufrufer die Abhängigkeit nicht verwerfen, da beim Aufrufen der Dispose Methode der Aufruf so behandelt wird, als ob sich die Abhängigkeit geändert hat. Daher wird die OnChanged(Object) -Methode automatisch aufgerufen.
– Unter Berücksichtigung dieser Regeln muss die Dispose -Methode auf eine der folgenden Arten aufgerufen werden: – Benutzer müssen die Dispose() Methodenüberladung aufrufen, wenn sie sich entscheiden, die abgeleitete Change Monitor-Instanz nicht in einen Cache einzufügen.
– Wenn die Implementierung versucht, die Change Monitor-Instanz in einen Objektcache einzufügen, die Einfügung jedoch fehlschlägt, ist die Cacheimplementierungen für den Aufruf der Dispose() -Überladung verantwortlich. Wenn der Einfügeversuch eine Ausnahme auslöst, muss die Cacheimplementierungen alle zugeordneten Abhängigkeiten löschen.
– Wenn der Cacheeintrag entfernt wird, muss die Cacheimplementierungen auch die Abhängigkeit löschen.
– Die interne Implementierung der OnChanged(Object) -Methode ruft die -Methode automatisch Dispose auf, nachdem sie einen Rückruf aufgerufen hat, der über registriert NotifyOnChanged(OnChangedCallback) ist.
Hinweis: Dieser automatische Aufruf der dispose-Methode während des Auslösens des Ereignisses tritt nur auf, wenn die Initialisierung der ChangeMonitor Instanz zuvor abgeschlossen wurde.
Wenn der Konstruktor eines abgeleiteten Änderungsmonitors die -Methode aufruft InitializationComplete() und sich der Zustand des Änderungsmonitors bereits geändert hat (d. h. der Status, der überwacht wird, als der Konstruktor noch aktiv war), wird der InitializationComplete() Änderungsmonitor von der Methode automatisch verworfen.
– 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 -Methode festgelegt wurde NotifyOnChanged(OnChangedCallback) oder nicht.
Konstruktoren
| ChangeMonitor() |
Initialisiert eine neue Instanz der ChangeMonitor-Klasse. Dieser Konstruktor wird von Konstruktoren in abgeleiteten Klassen aufgerufen, um die Basisklasse zu initialisieren. |
Eigenschaften
| HasChanged |
Ruft einen Wert ab, der angibt, dass der von der ChangeMonitor-Klasse überwachte Zustand geändert wurde. |
| IsDisposed |
Ruft einen Wert ab, der angibt, dass die abgeleitete Instanz einer ChangeMonitor-Klasse freigegeben wird. |
| UniqueId |
Ruft einen Wert ab, der die ChangeMonitor-Klasseninstanz darstellt. |
Methoden
| Dispose() |
Gibt alle von der aktuellen Instanz der ChangeMonitor-Klasse verwendeten Ressourcen frei. |
| Dispose(Boolean) |
Gibt alle verwalteten und nicht verwalteten Ressourcen und alle Verweise auf die ChangeMonitor-Instanz frei. Diese Überladung muss von abgeleiteten Änderungsüberwachungsklassen implementiert werden. |
| Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
| GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
| GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
| InitializationComplete() |
Wird vom Konstruktor abgeleiteter Klassen aufgerufen, um anzugeben, dass die Initialisierung abgeschlossen ist. |
| MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen 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. |
| OnChanged(Object) |
Wird von abgeleiteten Klassen aufgerufen, um das Ereignis auszulösen, wenn sich eine Abhängigkeit ändert. |
| ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
Gilt für:
Threadsicherheit
Dieser Typ ist threadsicher.