Share via


HostFileChangeMonitor Classe

Définition

Surveille les chemins d'accès aux répertoires et aux fichiers, et fournit une notification au cache concernant les modifications apportées aux éléments surveillés. Cette classe ne peut pas être héritée.

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
Héritage
HostFileChangeMonitor

Exemples

L’exemple suivant crée un élément de cache qui utilise un HostFileChangeMonitor objet pour surveiller l’état des données sources (qui sont un fichier) sur le système de fichiers. L’entrée de cache est définie à l’aide d’un CacheItemPolicy objet pour fournir des détails d’éviction et d’expiration pour l’entrée de cache.

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

Remarques

La HostFileChangeMonitor classe est une implémentation concrète du FileChangeMonitor type . Cette classe est scellée et ne peut donc pas être étendue. Cette classe est utile si vous souhaitez utiliser une implémentation de cache existante et surveiller les fichiers et répertoires à la recherche de modifications.

Pour chaque chemin de fichier ou de répertoire spécifié, la HostFileChangeMonitor classe déclenche une notification de modification si l’une des modifications suivantes se produit :

  • Le nom du fichier ou du répertoire surveillé change.

  • Le fichier ou répertoire spécifié n’existait pas au moment de la création du moniteur, mais a été créé ultérieurement. En d’autres termes, un fichier ou un répertoire a été créé dans l’étendue des éléments surveillés.

  • La taille d’un fichier surveillé a changé.

  • Le contenu d’un fichier surveillé a changé ou le contenu d’un répertoire surveillé a changé.

  • La liste de contrôle d’accès (ACL) du fichier ou du répertoire a été modifiée.

  • Le fichier ou répertoire surveillé a été supprimé.

Si trop de modifications se produisent pour le fichier ou le répertoire surveillé en même temps, le HostFileChangeMonitor instance peut perdre le suivi de modifications spécifiques. Dans ce scénario, la HostFileChangeMonitor classe déclenche une notification de modification. Ce scénario est plus susceptible de se produire lorsque le HostFileChangeMonitor instance surveille un répertoire et que de nombreuses modifications se produisent dans l’étendue de la structure de répertoires dans un court laps de temps.

Étant donné que l’objectif de la HostFileChangeMonitor classe est uniquement de signaler que quelque chose a changé dans l’ensemble des fichiers et répertoires surveillés, il n’est pas considéré comme important que les détails d’une modification spécifique ne soient pas capturés. L’objectif de la HostFileChangeMonitor classe est de fournir une notification indiquant que l’état a changé afin qu’une entrée de cache (ou des entrées) puisse être supprimée. Étant donné que la HostFileChangeMonitor classe n’indique pas exactement ce qui a changé, le dépassement de capacité de suivi des modifications interne n’est pas pertinent.

Lorsque vous fournissez des chemins d’accès à un HostFileChangeMonitor instance, les chemins d’accès au répertoire et au fichier doivent être des chemins d’accès complets au répertoire ou au fichier. Les chemins relatifs et les caractères génériques dans les chemins ne sont pas autorisés.

Lorsque la HostFileChangeMonitor classe est utilisée dans une application ASP.NET, l’identité Windows utilisée pour l’accès aux éléments surveillés est l’identité de l’application ASP.NET. En d’autres termes, l’identité de l’application sera l’une des suivantes :

  • Identité du processus.

  • Identité de l’application configurée.

  • Informations d’identification UNC si l’application s’exécute à partir d’un partage UNC.

Lorsque la HostFileChangeMonitor classe est utilisée dans une application non-ASP.NET, la FileSystemWatcher classe est utilisée en interne pour surveiller les fichiers. Par conséquent, toute liste de contrôle d’accès (ACL) s’applique à un fichier ou répertoire supervisé est appliquée à l’identité Windows du thread actuel.

Notes

Les appelants doivent disposer du niveau approprié d’autorisations de sécurité d’accès du code (CAS) et doivent disposer d’autorisations NTFS sur tous les répertoires et chemins surveillés.

Constructeurs

HostFileChangeMonitor(IList<String>)

Initialise une nouvelle instance de la classe HostFileChangeMonitor.

Propriétés

FilePaths

Obtient la collection de chemins d'accès aux répertoires ou aux fichiers passée au constructeur HostFileChangeMonitor(IList<String>).

HasChanged

Obtient une valeur qui indique que l'état surveillé par la classe ChangeMonitor a changé.

(Hérité de ChangeMonitor)
IsDisposed

Obtient une valeur qui indique que l'instance dérivée d'une classe ChangeMonitor est supprimée.

(Hérité de ChangeMonitor)
LastModified

Obtient une valeur en lecture seule qui indique l'heure de dernière écriture d'un fichier ou d'un chemin d'accès surveillé.

UniqueId

Obtient un identificateur pour l'instance HostFileChangeMonitor basée sur l'ensemble des chemins d'accès aux répertoires et aux fichiers surveillés.

Méthodes

Dispose()

Libère toutes les ressources qui sont utilisées par l'instance actuelle de la classe ChangeMonitor.

(Hérité de ChangeMonitor)
Dispose(Boolean)

Libère toutes les ressources managées et non managées, ainsi que les références à l'instance ChangeMonitor. Cette surcharge doit être implémentée par des classes de surveillance des modifications dérivées.

(Hérité de ChangeMonitor)
Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
InitializationComplete()

Appelé par le constructeur des classes dérivées pour indiquer que l'initialisation est terminée.

(Hérité de ChangeMonitor)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
NotifyOnChanged(OnChangedCallback)

Appelée par les implémenteurs de cache pour inscrire un rappel et notifier une instance de ObjectCache via le délégué OnChangedCallback lorsqu'une dépendance a été modifiée.

(Hérité de ChangeMonitor)
OnChanged(Object)

Appelé par les classes dérivées pour déclencher l'événement lorsqu'une dépendance a été modifiée.

(Hérité de ChangeMonitor)
ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

S’applique à