Freigeben über


HostFileChangeMonitor Klasse

Definition

Überwacht Verzeichnisse und Dateipfade und benachrichtigt den Cache über Änderungen der überwachten Elemente. Diese Klasse kann nicht vererbt werden.

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
Vererbung
HostFileChangeMonitor

Beispiele

Im folgenden Beispiel wird ein Cacheelement erstellt, das ein HostFileChangeMonitor -Objekt verwendet, um den Zustand der Quelldaten (bei dem es sich um eine Datei handelt) im Dateisystem zu überwachen. Der Cacheeintrag wird mithilfe eines CacheItemPolicy -Objekts definiert, um Entfernungs- und Ablaufdetails für den Cacheeintrag bereitzustellen.

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

Hinweise

Die HostFileChangeMonitor -Klasse ist eine konkrete Implementierung des Typs FileChangeMonitor . Diese Klasse ist versiegelt, daher kann sie nicht erweitert werden. Diese Klasse ist nützlich, wenn Sie eine vorhandene Cacheimplementierung verwenden und Dateien und Verzeichnisse auf Änderungen überwachen möchten.

Für jeden angegebenen Datei- oder Verzeichnispfad löst die HostFileChangeMonitor Klasse eine Änderungsbenachrichtigung aus, wenn eine der folgenden Änderungen eintritt:

  • Der Name der überwachten Datei oder des überwachten Verzeichnisses ändert sich.

  • Die angegebene Datei oder das angegebene Verzeichnis war zum Zeitpunkt der Erstellung des Monitors nicht vorhanden, sondern wurde später erstellt. Anders ausgedrückt: Eine Datei oder ein Verzeichnis wurde im Bereich der überwachten Elemente erstellt.

  • Die Größe einer überwachten Datei wurde geändert.

  • Der Inhalt einer überwachten Datei wurde geändert, oder der Inhalt eines überwachten Verzeichnisses wurde geändert.

  • Die Zugriffssteuerungsliste (Access Control List, ACL) der Datei oder des Verzeichnisses wurde geändert.

  • Die überwachte Datei oder das überwachte Verzeichnis wurde gelöscht.

Wenn zu viele Änderungen für die überwachte Datei oder das überwachte Verzeichnis gleichzeitig auftreten, kann der HostFileChangeMonitor instance bestimmte Änderungen nicht mehr nachverfolgen. In diesem Szenario löst die HostFileChangeMonitor -Klasse eine Änderungsbenachrichtigung aus. Dieses Szenario tritt eher auf, wenn der HostFileChangeMonitor instance ein Verzeichnis überwacht und in kurzer Zeit viele Änderungen im Bereich der Verzeichnisstruktur auftreten.

Da der Zweck der HostFileChangeMonitor Klasse nur darin besteht, zu signalisieren, dass sich etwas zwischen den überwachten Dateien und Verzeichnissen geändert hat, wird es nicht als wichtig erachtet, dass Details zu einer bestimmten Änderung nicht erfasst werden. Der Zweck der HostFileChangeMonitor Klasse besteht darin, eine Benachrichtigung bereitzustellen, dass sich der Zustand geändert hat, sodass ein Cacheeintrag (oder -einträge) entfernt werden kann. Da die HostFileChangeMonitor -Klasse nicht genau angibt, was sich geändert hat, ist der Überlauf der internen Änderungsnachverfolgung irrelevant.

Wenn Sie Pfade zu einer HostFileChangeMonitor instance angeben, müssen das Verzeichnis und die Dateipfade vollständige Pfade zum Verzeichnis oder zur Datei sein. Relative Pfade und Wildcardzeichen in Pfaden sind nicht zulässig.

Wenn die HostFileChangeMonitor -Klasse in einer ASP.NET-Anwendung verwendet wird, ist die Windows-Identität, die für den Zugriff auf überwachte Elemente verwendet wird, die Anwendungsidentität für die ASP.NET Anwendung. Mit anderen Worten, die Anwendungsidentität ist eine der folgenden:

  • Die Prozessidentität.

  • Die konfigurierte Anwendungsidentität.

  • Die UNC-Anmeldeinformationen, wenn die Anwendung von einer UNC-Freigabe ausgeführt wird.

Wenn die HostFileChangeMonitor -Klasse in einer non-ASP.NET-Anwendung verwendet wird, wird die FileSystemWatcher -Klasse intern zum Überwachen von Dateien verwendet. Daher wird jede Zugriffssteuerungsliste (Access Control List, ACL) für eine überwachte Datei oder ein überwachtes Verzeichnis auf die Windows-Identität des aktuellen Threads angewendet.

Hinweis

Aufrufer müssen über das entsprechende Maß an Cas-Berechtigungen (Code Access Security) verfügen und über NTFS-Berechtigungen für alle überwachten Verzeichnisse und Pfade verfügen.

Konstruktoren

HostFileChangeMonitor(IList<String>)

Initialisiert eine neue Instanz der HostFileChangeMonitor-Klasse.

Eigenschaften

FilePaths

Ruft die Auflistung von Verzeichnis- und Dateipfaden ab, die an den HostFileChangeMonitor(IList<String>)-Konstruktor übergeben wurde.

HasChanged

Ruft einen Wert ab, der angibt, dass der von der ChangeMonitor-Klasse überwachte Zustand geändert wurde.

(Geerbt von ChangeMonitor)
IsDisposed

Ruft einen Wert ab, der angibt, dass die abgeleitete Instanz einer ChangeMonitor-Klasse freigegeben wird.

(Geerbt von ChangeMonitor)
LastModified

Ruft einen schreibgeschützten Wert ab, der den Zeitpunkt des letzten Schreibvorgangs einer überwachten Datei oder eines Pfads angibt.

UniqueId

Ruft einen Bezeichner für die HostFileChangeMonitor-Instanz ab, der auf dem überwachten Satz von Verzeichnissen und Dateipfaden basiert.

Methoden

Dispose()

Gibt alle von der aktuellen Instanz der ChangeMonitor-Klasse verwendeten Ressourcen frei.

(Geerbt von ChangeMonitor)
Dispose(Boolean)

Gibt alle verwalteten und nicht verwalteten Ressourcen und alle Verweise auf die ChangeMonitor-Instanz frei. Diese Überladung muss von abgeleiteten Änderungsüberwachungsklassen implementiert werden.

(Geerbt von ChangeMonitor)
Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
InitializationComplete()

Wird vom Konstruktor abgeleiteter Klassen aufgerufen, um anzugeben, dass die Initialisierung abgeschlossen ist.

(Geerbt von ChangeMonitor)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
NotifyOnChanged(OnChangedCallback)

Wird von Cacheimplementierungen aufgerufen, um einen Rückruf zu registrieren und über den ObjectCache-Delegaten eine OnChangedCallback-Instanz zu benachrichtigen, wenn sich eine Abhängigkeit geändert hat.

(Geerbt von ChangeMonitor)
OnChanged(Object)

Wird von abgeleiteten Klassen aufgerufen, um das Ereignis auszulösen, wenn sich eine Abhängigkeit ändert.

(Geerbt von ChangeMonitor)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Gilt für: