ChangeMonitor Clase

Definición

Proporciona una clase base para un tipo personalizado derivado que supervisa los cambios de estado de los datos de los que depende un elemento de caché.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
Herencia
ChangeMonitor
Derivado
Implementaciones

Comentarios

La ChangeMonitor clase se utiliza como la clase base para las clases de supervisión derivadas especializadas para implementaciones de caché concretas.The ChangeMonitor class is used as the base class for derived monitor classes that are specialized for particular cache implementations. Una ChangeMonitor instancia supervisa los cambios en el estado de los datos de los que depende un elemento de la memoria caché.A ChangeMonitor instance monitors changes in the state of data which a cache item depends on. Por ejemplo, el elemento puede ser un archivo o una entidad de datos cuyo contenido se almacena en caché.For example, the item can be a file or data entity whose contents are cached. Si se actualiza el archivo o la entidad de datos, también se debe cambiar la entrada de caché asociada.If the file or data entity is updated, the associated cache entry must be changed also. Entre los elementos comunes que se pueden supervisar se encuentran las entidades de datos (como campos de base de datos, valores, filas o tablas), otra entrada de caché, y archivos y atributos de archivo.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.

Un cambio de dependencia es un cambio en el estado de una dependencia.A dependency change is a change in the state of a dependency. En una implementación de caché típica, una vez ChangeMonitor que una instancia notifica a la memoria caché que una dependencia ha cambiado, la memoria caché realiza la acción necesaria, como invalidar la entrada de caché insertada.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.

ChangeMonitorLas clases derivadas se pueden personalizar para supervisar los cambios de dependencia de almacenes de datos diferentes.Derived ChangeMonitor classes can be customized to monitor dependency changes for specific different data stores. Por ejemplo, hay implementaciones de caché para un sistema de archivos, memoria física o base de datos.For example, there are cache implementations for a file system, physical memory, or a database. La ChangeMonitor clase examina los cambios que se producen fuera de la memoria caché y, a continuación, alerta a la caché de que se han producido cambios.The ChangeMonitor class examines changes that occur outside the cache, and then alerts the cache that changes have occurred.

El .NET Framework incluye las siguientes clases que derivan de la ChangeMonitor clase:The .NET Framework includes the following classes that derive from ChangeMonitor class:

Cada una de estas clases funciona con distintos tipos de dependencias.Each of these classes works with different types of dependencies. Por ejemplo, la FileChangeMonitor clase derivada supervisa los cambios en una memoria caché de los datos del sistema de archivos (archivos y carpetas) de los que depende el elemento de la memoria caché.For example, the derived FileChangeMonitor class monitors changes to a cache for file system data (files and folders) that the cache item depends on.

Notas a los implementadores

Si crea una implementación de caché personalizada o un tipo de monitor de cambios derivado, debe seguir ciertas instrucciones.If you create a custom cache implementation or a derived change monitor type, you must follow certain guidelines. En la lista siguiente se resumen estas instrucciones.The following list summarizes these guidelines. Para obtener más información, consulte la documentación de métodos o propiedades individuales.For more information, see the documentation for individual methods or properties.

-El constructor de una clase derivada debe establecer la UniqueId propiedad, iniciar la supervisión y llamar al InitializationComplete() método antes de que el método devuelva.- The constructor of a derived class must set the UniqueId property, begin monitoring, and call InitializationComplete() method before the method returns. Si un constructor detecta un error durante las construcciones y debe tener que desechar los recursos, el constructor solo puede llamar a la Dispose sobrecarga una vez que InitializationComplete() se llama al método porque la Dispose sobrecarga producirá una InvalidOperationException excepción si no se completa la inicialización.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.

-Si se producen cambios en los datos que se están supervisando antes de que se complete la inicialización, el constructor debe llamar al OnChanged(Object) método antes de llamar al InitializationComplete() método.- 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.

-Después de crear una instancia de un ChangeMonitor tipo derivado, debe insertar el monitor en una ObjectCache implementación personalizada.- After a derived ChangeMonitor type is instantiated, you must insert the monitor into a custom ObjectCache implementation. O bien, si ha terminado de usar el monitor de cambios, llame al Dispose método.Or if you are finished using the change monitor, call the Dispose method.

-Después de ChangeMonitor que se inserte una instancia en una ObjectCache implementación, la ObjectCache instancia de requiere que se elimine el monitor de cambios.- After a ChangeMonitor instance is inserted into a ObjectCache implementation, the ObjectCache instance require that the change monitor is disposed. Incluso si la inserción no es válida y produce una excepción, la ObjectCache implementación debe llamar a la Dispose sobrecarga.Even if the insertion is invalid and causes an exception, the ObjectCache implementation must call the Dispose overload.

-Después de insertar un monitor de cambios derivado en una memoria caché, la ObjectCache implementación debe llamar a NotifyOnChanged(OnChangedCallback) , pasando un OnChangedCallback objeto.- After a derived change monitor is inserted into a cache, the ObjectCache implementation must call NotifyOnChanged(OnChangedCallback), by passing a OnChangedCallback object. NotifyOnChanged(OnChangedCallback)Solo se puede llamar al método una vez.The NotifyOnChanged(OnChangedCallback) method can be called only one time. Si ya se ha producido un cambio de dependencia, se OnChangedCallback llamará a la instancia inmediatamente cuando NotifyOnChanged(OnChangedCallback) se llame a.If a dependency change has already occurred, the OnChangedCallback instance will be called immediately when NotifyOnChanged(OnChangedCallback) is called. De lo contrario, OnChangedCallback solo se llamará a la instancia una vez.Otherwise, the OnChangedCallback instance will be called only one time. Esta llamada de una vez se produce cuando OnChanged(Object) se llama al método porque la ChangeMonitor instancia ha detectado un cambio o cuando Dispose() se llama al método en el, lo que ChangeMonitor ocurra primero.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.

-La OnChangedCallback instancia proporcionada por una ObjectCache implementación debe quitar la entrada de caché asociada y especificar un motivo mediante la DependencyChanged enumeración.- 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.

: Una ChangeMonitor instancia de puede llamar al OnChanged(Object) método antes de que una implementación de caché haya llamado a NotifyOnChanged(OnChangedCallback) Method o After.- A ChangeMonitor instance can call the OnChanged(Object) method either before a cache implementation has called NotifyOnChanged(OnChangedCallback) method or after. Si se llama al OnChanged(Object) método antes de NotifyOnChanged(OnChangedCallback) que se llame a, la ChangeMonitor implementación base notificará a la memoria caché que se ha producido este error y desencadenará la devolución de llamada que se pasará NotifyOnChanged(OnChangedCallback) inmediatamente cuando NotifyOnChanged(OnChangedCallback) se invoque.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. Los datos de estado que se pasan al OnChanged(Object) método se guardan en el monitor de cambios y, posteriormente, se pasan al NotifyOnChanged(OnChangedCallback) método cuando NotifyOnChanged(OnChangedCallback) se invoca el método.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.

-Un monitor de cambios debe implementar el Dispose(Boolean) método.- A change monitor must implement the Dispose(Boolean) method. Para obtener más información, vea la documentación del método Dispose(Boolean).For more information, see the Dispose(Boolean) method documentation.

- Dispose() Se debe llamar a la sobrecarga del método para desechar la ChangeMonitor instancia.- The Dispose() method overload must be called to dispose of the ChangeMonitor instance. Las reglas para llamar a Dispose son las siguientes:The rules for calling Dispose are as follows: -Antes de que se inserte un elemento en la memoria caché, es responsabilidad del autor de la llamada desechar una ChangeMonitor instancia.- Before an item is inserted into the cache, it is the responsibility of caller to dispose of a ChangeMonitor instance.

-Una vez que el elemento de caché y las ChangeMonitor instancias asociadas a él se pasan a una memoria caché, el implementador de caché debe asegurarse de que Dispose se llama al método, incluso si se produce un error en la inserción.- 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.

-Después de que un elemento y sus ChangeMonitor instancias asociadas se pasan a una memoria caché, el llamador no debe desechar la dependencia porque cuando Dispose se llama al método, la llamada se trata como si la dependencia hubiera cambiado.- 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. Como resultado, el OnChanged(Object) método se invoca automáticamente.As a result, the OnChanged(Object) method is automatically invoked.

-Teniendo en cuenta estas reglas, Dispose se debe llamar al método de una de las siguientes maneras:- Taking these rules into consideration, the Dispose method must be called in one of the following ways: -Los usuarios deben llamar a la Dispose() sobrecarga del método si deciden no insertar la instancia derivada del monitor de cambios en una memoria caché.- Users must call the Dispose() method overload if they decide not to insert the derived change-monitor instance into a cache.

-Si la implementación intenta insertar la instancia del monitor de cambios en una memoria caché de objetos pero se produce un error en la inserción, la implementación de la memoria caché es responsable de llamar a la Dispose() sobrecarga.- 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. Cuando el intento de inserción provoca una excepción, la implementación de la memoria caché debe desechar cualquier dependencia asociada.When the insertion attempt causes an exception, the cache implementation must dispose of any associated dependencies.

-Si se quita la entrada de caché, la implementación de la memoria caché también debe desechar la dependencia.- If the cache entry is removed, the cache implementation must also dispose of the dependency.

-La implementación interna del OnChanged(Object) método llama automáticamente al Dispose método después de llamar a una devolución de llamada que se registra mediante NotifyOnChanged(OnChangedCallback) .- The internal implementation of the OnChanged(Object) method automatically calls the Dispose method after it calls a callback that is registered through NotifyOnChanged(OnChangedCallback).


Esta llamada automática al método Dispose durante la activación del evento solo se produce si la inicialización de la ChangeMonitor instancia se ha completado previamente.This automatic call to the dispose method during the event firing only occurs if the initialization of the ChangeMonitor instance was previously completed.

Cuando un constructor de un monitor de cambios derivado llama al InitializationComplete() método, si el estado del monitor de cambios ya ha cambiado (es decir, el estado que se supervisa ya ha cambiado cuando el constructor todavía estaba activo), el método eliminará InitializationComplete() automáticamente el monitor de cambios.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.

-La HasChanged propiedad se establece en después de que la true OnChanged(Object) instancia derivada del monitor de cambios llame al método, independientemente de si un objeto se ha OnChangedCallback establecido mediante una llamada al NotifyOnChanged(OnChangedCallback) método o no.- 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.

Constructores

ChangeMonitor()

Inicializa una nueva instancia de la clase ChangeMonitor.Initializes a new instance of the ChangeMonitor class. Los constructores de clases derivadas llaman a este constructor para inicializar la clase base.This constructor is called from constructors in derived classes to initialize the base class.

Propiedades

HasChanged

Obtiene un valor que indica que el estado supervisado por la clase ChangeMonitor ha cambiado.Gets a value that indicates that the state that is monitored by the ChangeMonitor class has changed.

IsDisposed

Obtiene un valor que indica que se elimina la instancia derivada de una clase ChangeMonitor.Gets a value that indicates that the derived instance of a ChangeMonitor class is disposed.

UniqueId

Obtiene un valor que representa una instancia de la clase ChangeMonitor.Gets a value that represents the ChangeMonitor class instance.

Métodos

Dispose()

Libera todos los recursos utilizados por la instancia actual de la clase ChangeMonitor.Releases all resources that are used by the current instance of the ChangeMonitor class.

Dispose(Boolean)

Libera todos los recursos administrados y no administrados así como todas las referencias a la instancia de ChangeMonitor.Releases all managed and unmanaged resources and any references to the ChangeMonitor instance. Esta sobrecarga la deben implementar las clases de supervisión de cambios derivadas.This overload must be implemented by derived change-monitor classes.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.Determines whether the specified object is equal to the current object.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.Serves as the default hash function.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(Heredado de Object)
InitializationComplete()

Este método lo invoca el constructor de clases derivadas para indicar que ha finalizado la inicialización.Called from the constructor of derived classes to indicate that initialization is finished.

MemberwiseClone()

Crea una copia superficial del Object actual.Creates a shallow copy of the current Object.

(Heredado de Object)
NotifyOnChanged(OnChangedCallback)

Lo llaman los implementadores de memoria caché para registrar una devolución de llamada y notificar a una instancia de ObjectCache a través del delegado OnChangedCallback cuando una dependencia ha cambiado.Called by Cache implementers to register a callback and notify an ObjectCache instance through the OnChangedCallback delegate when a dependency has changed.

OnChanged(Object)

Este método lo invocan las clases derivadas para generar el evento cuando cambia una dependencia.Called by derived classes to raise the event when a dependency changes.

ToString()

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Heredado de Object)

Se aplica a

Seguridad para subprocesos

Este tipo es seguro para la ejecución de subprocesos.This type is thread safe.

Consulte también