ChangeMonitor Klas

Definitie

Biedt een basisklasse voor een afgeleid aangepast type dat wijzigingen bewaakt in de status van de gegevens waarvan een cache-item afhankelijk is.

public ref class ChangeMonitor abstract : IDisposable
public abstract class ChangeMonitor : IDisposable
type ChangeMonitor = class
    interface IDisposable
Public MustInherit Class ChangeMonitor
Implements IDisposable
Overname
ChangeMonitor
Afgeleid
Implementeringen

Opmerkingen

De ChangeMonitor klasse wordt gebruikt als basisklasse voor afgeleide monitorklassen die zijn gespecialiseerd voor bepaalde cache-implementaties. Een ChangeMonitor exemplaar bewaakt wijzigingen in de status van gegevens waarvan een cache-item afhankelijk is. Het item kan bijvoorbeeld een bestand of gegevensentiteit zijn waarvan de inhoud in de cache is opgeslagen. Als het bestand of de gegevensentiteit wordt bijgewerkt, moet de bijbehorende cachevermelding ook worden gewijzigd. Veelvoorkomende items die kunnen worden bewaakt, zijn gegevensentiteiten (zoals databasevelden, waarden, rijen of tabellen), een andere cachevermelding en bestanden en bestandskenmerken.

Een afhankelijkheidswijziging is een wijziging in de status van een afhankelijkheid. In een typische cache-implementatie voert ChangeMonitor de cache na een instantie de cache aan dat een afhankelijkheid is gewijzigd, de vereiste actie uit, zoals het ongeldig maken van de ingevoegde cachevermelding.

Afgeleide ChangeMonitor klassen kunnen worden aangepast om afhankelijkheidswijzigingen voor specifieke verschillende gegevensarchieven te bewaken. Er zijn bijvoorbeeld cache-implementaties voor een bestandssysteem, fysiek geheugen of een database. De ChangeMonitor klasse onderzoekt wijzigingen die zich buiten de cache voordoen en waarschuwt vervolgens de cache die wijzigingen hebben aangebracht.

.NET Framework bevat de volgende klassen die zijn afgeleid van ChangeMonitor-klasse:

Elk van deze klassen werkt met verschillende typen afhankelijkheden. De afgeleide FileChangeMonitor klasse bewaakt bijvoorbeeld wijzigingen in een cache voor bestandssysteemgegevens (bestanden en mappen) waarop het cache-item afhankelijk is.

Notities voor uitvoerders

Als u een aangepaste cache-implementatie of een afgeleid type wijzigingsmonitor maakt, moet u bepaalde richtlijnen volgen. De volgende lijst bevat een overzicht van deze richtlijnen. Zie de documentatie voor afzonderlijke methoden of eigenschappen voor meer informatie.

  • De constructor van een afgeleide klasse moet de UniqueId eigenschap instellen, beginnen met bewaken en aanroepen InitializationComplete() voordat de methode wordt geretourneerd. Als een constructor tijdens de constructie een fout tegenkomt en resources moet moeten verwijderen, kan de constructor alleen de Dispose overbelasting aanroepen nadat de InitializationComplete() methode is aangeroepen omdat de overbelasting een InvalidOperationException uitzondering genereert als de Dispose initialisatie niet is voltooid.

  • Als er wijzigingen optreden in de gegevens die worden bewaakt voordat de initialisatie is voltooid, moet de constructor de OnChanged(Object) methode aanroepen voordat de methode wordt InitializationComplete() aangeroepen.

  • Nadat een afgeleid type is geïnstantieerd ChangeMonitor , moet u de monitor invoegen in een aangepaste ObjectCache implementatie. Of als u klaar bent met het wijzigen van de monitor, roept u de Dispose methode aan.

  • Nadat een ChangeMonitor exemplaar is ingevoegd in een ObjectCache implementatie, moet de ObjectCache wijzigingsmonitor worden verwijderd. Zelfs als de invoeging ongeldig is en een uitzondering veroorzaakt, moet de ObjectCache implementatie de Dispose overbelasting aanroepen.

  • Nadat een afgeleide wijzigingsmonitor in een cache is ingevoegd, moet NotifyOnChanged(OnChangedCallback)de implementatie een ObjectCache object doorgevenOnChangedCallback. De NotifyOnChanged(OnChangedCallback) methode kan slechts één keer worden aangeroepen. Als er al een afhankelijkheidswijziging is opgetreden, wordt het OnChangedCallback exemplaar onmiddellijk aangeroepen wanneer NotifyOnChanged(OnChangedCallback) deze wordt aangeroepen. Anders wordt het OnChangedCallback exemplaar slechts één keer aangeroepen. Deze eenmalige aanroep vindt plaats wanneer de OnChanged(Object) methode wordt aangeroepen omdat het ChangeMonitor exemplaar een wijziging heeft gedetecteerd, of wanneer de Dispose() methode wordt aangeroepen op de ChangeMonitor, afhankelijk van wat zich het eerst voordoet.

  • Het OnChangedCallback exemplaar dat door een ObjectCache implementatie wordt geleverd, moet de bijbehorende cachevermelding verwijderen en een reden opgeven met behulp van de DependencyChanged opsomming.

  • Een ChangeMonitor exemplaar kan de OnChanged(Object) methode aanroepen voordat een cache-implementatie methode of daarna heeft aangeroepen NotifyOnChanged(OnChangedCallback) . Als de OnChanged(Object) methode wordt aangeroepen voordat NotifyOnChanged(OnChangedCallback) deze wordt aangeroepen, ontvangt de basis-implementatie ChangeMonitor een melding van de cache dat dit heeft plaatsgevonden en wordt de callback geactiveerd die onmiddellijk wordt doorgegeven NotifyOnChanged(OnChangedCallback) wanneer NotifyOnChanged(OnChangedCallback) deze wordt aangeroepen. Alle statusgegevens die aan de OnChanged(Object) methode worden doorgegeven, worden opgeslagen door de wijzigingsmonitor en vervolgens doorgegeven aan de NotifyOnChanged(OnChangedCallback) methode wanneer de NotifyOnChanged(OnChangedCallback) methode wordt aangeroepen.

  • Een wijzigingsmonitor moet de Dispose(Boolean) methode implementeren. Zie de documentatie voor methoden Dispose(Boolean) voor meer informatie.

  • De Dispose() overbelasting van de methode moet worden aangeroepen om het ChangeMonitor exemplaar te verwijderen. De regels voor het aanroepen van Verwijdering zijn als volgt:

    • Voordat een item in de cache wordt ingevoegd, is het de verantwoordelijkheid van de aanroeper om een ChangeMonitor exemplaar te verwijderen.

    • Zodra het cache-item en de ChangeMonitor exemplaren die eraan zijn gekoppeld, worden doorgegeven aan een cache, moet de cache-implementer ervoor zorgen dat de Dispose methode wordt aangeroepen, zelfs als de invoegbewerking mislukt.

    • Nadat een item en de bijbehorende ChangeMonitor exemplaren zijn doorgegeven aan een cache, mag de aanroeper de afhankelijkheid niet verwijderen omdat wanneer de Dispose methode wordt aangeroepen, de aanroep wordt behandeld alsof de afhankelijkheid is gewijzigd. Hierdoor wordt de OnChanged(Object) methode automatisch aangeroepen.

  • Als u rekening houdt met deze regels, moet de Dispose methode op een van de volgende manieren worden aangeroepen:

    • Gebruikers moeten de overbelasting van de Dispose() methode aanroepen als ze besluiten het afgeleide exemplaar van wijzigingsmonitor niet in een cache in te voegen.

    • Als de implementatie probeert het exemplaar van wijzigingsmonitor in te voegen in een objectcache, maar de invoegbewerking mislukt, is de implementatie van de cache verantwoordelijk voor het aanroepen van de Dispose() overbelasting. Wanneer de invoegpoging een uitzondering veroorzaakt, moet de cache-implementatie alle bijbehorende afhankelijkheden verwijderen.

    • Als de cachevermelding wordt verwijderd, moet de cache-implementatie ook de afhankelijkheid verwijderen.

    • De interne implementatie van de OnChanged(Object) methode roept automatisch de Dispose methode aan nadat deze een callback heeft aangeroepen die is geregistreerd via NotifyOnChanged(OnChangedCallback).

Opmerking: Deze automatische aanroep van de verwijderingsmethode tijdens het activeren van de gebeurtenis vindt alleen plaats als de initialisatie van het ChangeMonitor exemplaar eerder is voltooid.

Wanneer de constructor van een afgeleide wijzigingsmonitor de InitializationComplete() methode aanroept, als de status van de wijzigingsmonitor al is gewijzigd (dat wil gezegd, de status die al wordt bewaakt toen de constructor nog actief was), wordt de InitializationComplete() wijzigingsmonitor automatisch verwijderd.

Constructors

Name Description
ChangeMonitor()

Initialiseert een nieuw exemplaar van de ChangeMonitor klasse. Deze constructor wordt aangeroepen vanuit constructors in afgeleide klassen om de basisklasse te initialiseren.

Eigenschappen

Name Description
HasChanged

Hiermee wordt een waarde opgehaald die aangeeft dat de status die wordt bewaakt door de ChangeMonitor klasse is gewijzigd.

IsDisposed

Hiermee wordt een waarde opgehaald die aangeeft dat het afgeleide exemplaar van een ChangeMonitor klasse wordt verwijderd.

UniqueId

Hiermee haalt u een waarde op die het ChangeMonitor klasse-exemplaar vertegenwoordigt.

Methoden

Name Description
Dispose()

Publiceert alle resources die worden gebruikt door het huidige exemplaar van de ChangeMonitor klasse.

Dispose(Boolean)

Alle beheerde en onbeheerde resources en eventuele verwijzingen naar het ChangeMonitor exemplaar worden vrijgegeven. Deze overbelasting moet worden geïmplementeerd door afgeleide wijzigingsmonitorklassen.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
InitializationComplete()

Aangeroepen vanuit de constructor van afgeleide klassen om aan te geven dat initialisatie is voltooid.

MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
NotifyOnChanged(OnChangedCallback)

Door cache-implementeerfuncties aangeroepen om een callback te registreren en een ObjectCache exemplaar via de gemachtigde op de OnChangedCallback hoogte te stellen wanneer een afhankelijkheid is gewijzigd.

OnChanged(Object)

Aangeroepen door afgeleide klassen om de gebeurtenis te verhogen wanneer een afhankelijkheid verandert.

ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Van toepassing op

Veiligheid thread

Dit type is thread veilig.

Zie ook