HostFileChangeMonitor Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Surveille les répertoires et les chemins d’accès aux fichiers et avertit le cache des 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
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 est 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 du 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, par conséquent, elle ne peut pas être étendue. Cette classe est utile si vous souhaitez utiliser une implémentation de cache existante et surveiller les fichiers et les répertoires pour les modifications.
Pour chaque fichier ou chemin d’accès au 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 le répertoire spécifié n’existait pas au moment de la création du moniteur, mais il 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.
Taille d’un fichier supervisé modifié.
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 le répertoire surveillé a été supprimé.
Si un trop grand nombre de modifications se produisent pour le fichier ou le répertoire surveillé en même temps, l’instance HostFileChangeMonitor peut perdre le suivi des 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 l’instance HostFileChangeMonitor surveille un répertoire et que de nombreuses modifications se produisent dans l’étendue de la structure de répertoires pendant une courte période.
Étant donné que l’objectif de la HostFileChangeMonitor classe est de signaler que quelque chose a changé parmi l’ensemble de fichiers et de répertoires surveillés, il n’est pas considéré comme important que les détails relatifs à une modification spécifique ne soient pas capturés. L’objectif de la HostFileChangeMonitor classe est de fournir une notification qui a changé l’état afin qu’une entrée de cache (ou des entrées) puisse être supprimée. Étant donné que la classe n’indique pas exactement ce qui a changé, le HostFileChangeMonitor dépassement de suivi des modifications internes n’est pas pertinent.
Lorsque vous fournissez des chemins d’accès à une HostFileChangeMonitor instance, le répertoire et les chemins de fichier doivent être des chemins complets vers le répertoire ou le fichier. Les chemins relatifs et les caractères génériques dans les chemins d’accès ne sont pas autorisés.
Lorsque la classe HostFileChangeMonitor 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 est 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 classe HostFileChangeMonitor est utilisée dans une application non ASP.NET, la classe FileSystemWatcher est utilisée en interne pour surveiller les fichiers. Par conséquent, quelle que soit la liste de contrôle d’accès (ACL) s’applique à un fichier ou répertoire supervisé est appliqué à l’identité Windows du thread actuel.
Note
Les appelants doivent disposer du niveau approprié d’autorisations de sécurité d’accès au code (CAS) et doivent disposer d’autorisations NTFS pour tous les répertoires et chemins surveillés.
Constructeurs
| Nom | Description |
|---|---|
| HostFileChangeMonitor(IList<String>) |
Initialise une nouvelle instance de la classe HostFileChangeMonitor. |
Propriétés
| Nom | Description |
|---|---|
| FilePaths |
Obtient la collection de répertoires et de chemins d’accès aux fichiers passés au HostFileChangeMonitor(IList<String>) constructeur. |
| HasChanged |
Obtient une valeur qui indique que l’état surveillé par la ChangeMonitor classe a changé. (Hérité de ChangeMonitor) |
| IsDisposed |
Obtient une valeur qui indique que l’instance dérivée d’une ChangeMonitor classe est supprimée. (Hérité de ChangeMonitor) |
| LastModified |
Obtient une valeur en lecture seule qui indique la dernière heure d’écriture d’un fichier ou d’un chemin supervisé. |
| UniqueId |
Obtient un identificateur pour l’instance HostFileChangeMonitor basée sur l’ensemble de répertoires supervisés et de chemins d’accès aux fichiers. |
Méthodes
| Nom | Description |
|---|---|
| Dispose() |
Libère toutes les ressources utilisées par l’instance actuelle de la ChangeMonitor classe. (Hérité de ChangeMonitor) |
| Dispose(Boolean) |
Libère toutes les ressources managées et non managées et toutes les références à l’instance ChangeMonitor . Cette surcharge doit être implémentée par les classes de moniteur de modification 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() |
Sert de fonction de hachage par défaut. (Hérité de Object) |
| GetType() |
Obtient la Type de l’instance actuelle. (Hérité de Object) |
| InitializationComplete() |
Appelé à partir du constructeur de classes dérivées pour indiquer que l’initialisation est terminée. (Hérité de ChangeMonitor) |
| MemberwiseClone() |
Crée une copie superficielle du Objectactuel. (Hérité de Object) |
| NotifyOnChanged(OnChangedCallback) |
Appelé par les implémenteurs de cache pour inscrire un rappel et notifier une ObjectCache instance par le biais du OnChangedCallback délégué lorsqu’une dépendance a changé. (Hérité de ChangeMonitor) |
| OnChanged(Object) |
Appelée par des classes dérivées pour déclencher l’événement lorsqu’une dépendance change. (Hérité de ChangeMonitor) |
| ToString() |
Retourne une chaîne qui représente l’objet actuel. (Hérité de Object) |