HostFileChangeMonitor Clase

Definición

Supervisa directorios y rutas de acceso de archivo, y notifica a la memoria caché los cambios efectuados en los elementos supervisados. Esta clase no puede heredarse.

public ref class HostFileChangeMonitor sealed : System::Runtime::Caching::FileChangeMonitor
public sealed class HostFileChangeMonitor : System.Runtime.Caching.FileChangeMonitor
type HostFileChangeMonitor = class
    inherit FileChangeMonitor
Public NotInheritable Class HostFileChangeMonitor
Inherits FileChangeMonitor
Herencia
HostFileChangeMonitor

Ejemplos

En el ejemplo siguiente se crea un elemento de caché que usa un HostFileChangeMonitor objeto para supervisar el estado de los datos de origen (que es un archivo) en el sistema de archivos. La entrada de caché se define mediante un CacheItemPolicy objeto para proporcionar detalles de expulsión y expiración para la entrada de caché.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Runtime.Caching;
using System.IO;

public partial class _Default : System.Web.UI.Page
{

    protected void Button1_Click1(object sender, EventArgs e)
    {
        ObjectCache cache = MemoryCache.Default;
        string fileContents = cache["filecontents"] as string;

        if (fileContents == null)
        {
            CacheItemPolicy policy = new CacheItemPolicy();
            policy.AbsoluteExpiration =
                DateTimeOffset.Now.AddSeconds(10.0);

            List<string> filePaths = new List<string>();
            string cachedFilePath = Server.MapPath("~") +
                "\\cacheText.txt";

            filePaths.Add(cachedFilePath);

            policy.ChangeMonitors.Add(new
                HostFileChangeMonitor(filePaths));

            // Fetch the file contents.
            fileContents = File.ReadAllText(cachedFilePath) + "\n"
                + DateTime.Now.ToString();

            cache.Set("filecontents", fileContents, policy);
        }

        Label1.Text = fileContents;
    }
}
Imports System.Runtime.Caching
Imports System.IO

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Button1_Click(ByVal sender As Object, _
            ByVal e As System.EventArgs) Handles Button1.Click
        Dim cache As ObjectCache = MemoryCache.Default
        Dim fileContents As String = TryCast(cache("filecontents"), _
            String)
        If fileContents Is Nothing Then
            Dim policy As New CacheItemPolicy()
            policy.AbsoluteExpiration = _
                DateTimeOffset.Now.AddSeconds(10.0)
            Dim filePaths As New List(Of String)()
            Dim cachedFilePath As String = Server.MapPath("~") & _
                "\cacheText.txt"
            filePaths.Add(cachedFilePath)
            policy.ChangeMonitors.Add(New  _
                HostFileChangeMonitor(filePaths))

            ' Fetch the file contents.
            fileContents = File.ReadAllText(cachedFilePath) & _
                vbCrLf & DateTime.Now.ToString()
            cache.Set("filecontents", fileContents, policy)
        End If
        Label1.Text = fileContents
    End Sub

End Class

Comentarios

La HostFileChangeMonitor clase es una implementación concreta del FileChangeMonitor tipo . Esta clase está sellada, por lo tanto, no se puede extender. Esta clase es útil si desea usar una implementación de caché existente y supervisar los archivos y directorios de los cambios.

Para cada ruta de acceso de archivo o directorio especificada, la HostFileChangeMonitor clase desencadena una notificación de cambio si se produce alguno de los siguientes cambios:

  • El nombre del archivo o directorio supervisado cambia.

  • El archivo o directorio especificado no existía en el momento en que se creó el monitor, pero se creó más adelante. Es decir, se creó un archivo o directorio en el ámbito de los elementos supervisados.

  • El tamaño de un archivo supervisado ha cambiado.

  • El contenido de un archivo supervisado ha cambiado o el contenido de un directorio supervisado ha cambiado.

  • Se cambió la lista de control de acceso (ACL) del archivo o directorio.

  • Se eliminó el archivo o directorio supervisado.

Si se producen demasiados cambios en el archivo o directorio supervisados al mismo tiempo, la HostFileChangeMonitor instancia puede perder el seguimiento de los cambios específicos. En este escenario, la HostFileChangeMonitor clase desencadena una notificación de cambio. Este escenario es más probable que se produzca cuando la HostFileChangeMonitor instancia supervisa un directorio y se producen muchos cambios en el ámbito de la estructura de directorios en un breve período de tiempo.

Dado que el propósito de la HostFileChangeMonitor clase es indicar que algo ha cambiado entre el conjunto de archivos y directorios supervisados, no se considera importante que no se capturen detalles sobre un cambio específico. El propósito de la HostFileChangeMonitor clase es proporcionar una notificación de que el estado ha cambiado para que se pueda expulsar una entrada de caché (o entradas). Dado que la HostFileChangeMonitor clase no indica exactamente qué ha cambiado, el desbordamiento de seguimiento de cambios internos es irrelevante.

Al proporcionar rutas de acceso a una HostFileChangeMonitor instancia, las rutas de acceso de directorio y archivo deben ser rutas de acceso completas al directorio o archivo. No se permiten rutas de acceso relativas ni caracteres comodín en las rutas de acceso.

Cuando la HostFileChangeMonitor clase se usa en una aplicación de ASP.NET, la identidad de Windows que se usa para el acceso a elementos supervisados es la identidad de la aplicación para la aplicación de ASP.NET. En otras palabras, la identidad de la aplicación será una de las siguientes:

  • Identidad del proceso.

  • Identidad de aplicación configurada.

  • Credencial UNC si la aplicación se ejecuta desde un recurso compartido UNC.

Cuando la HostFileChangeMonitor clase se usa en una aplicación non-ASP.NET, la FileSystemWatcher clase se usa internamente para supervisar los archivos. Como resultado, cualquier lista de control de acceso (ACL) que se aplique a un archivo o directorio supervisado se aplica a la identidad de Windows del subproceso actual.

Nota

Los autores de llamadas deben tener el nivel adecuado de permisos de seguridad de acceso al código (CAS) y deben tener permisos NTFS para todos los directorios y rutas de acceso supervisados.

Constructores

HostFileChangeMonitor(IList<String>)

Inicializa una nueva instancia de la clase HostFileChangeMonitor.

Propiedades

FilePaths

Obtiene la colección de rutas de acceso de directorios y archivos que se pasó al constructor HostFileChangeMonitor(IList<String>).

HasChanged

Obtiene un valor que indica que el estado supervisado por la clase ChangeMonitor ha cambiado.

(Heredado de ChangeMonitor)
IsDisposed

Obtiene un valor que indica que se elimina la instancia derivada de una clase ChangeMonitor.

(Heredado de ChangeMonitor)
LastModified

Obtiene un valor de solo lectura que indica la última vez que se produjo la escritura de un archivo o ruta de acceso que se supervisa.

UniqueId

Obtiene un identificador de la instancia HostFileChangeMonitor que se basa en el conjunto de rutas de acceso de directorios y archivo supervisados.

Métodos

Dispose()

Libera todos los recursos utilizados por la instancia actual de la clase ChangeMonitor.

(Heredado de ChangeMonitor)
Dispose(Boolean)

Libera todos los recursos administrados y no administrados así como todas las referencias a la instancia de ChangeMonitor. Esta sobrecarga la deben implementar las clases de supervisión de cambios derivadas.

(Heredado de ChangeMonitor)
Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
InitializationComplete()

Este método lo invoca el constructor de clases derivadas para indicar que ha finalizado la inicialización.

(Heredado de ChangeMonitor)
MemberwiseClone()

Crea una copia superficial del Object actual.

(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.

(Heredado de ChangeMonitor)
OnChanged(Object)

Este método lo invocan las clases derivadas para generar el evento cuando cambia una dependencia.

(Heredado de ChangeMonitor)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a