HostFileChangeMonitor Klasse

Definition

Überwacht Verzeichnisse und Dateipfade und benachrichtigt den Cache von Änderungen an den überwachten Elementen. 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 Status der Quelldaten (eine Datei) 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 FileChangeMonitor Typs. 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 jede angegebene Datei oder jeden angegebenen Verzeichnispfad löst die HostFileChangeMonitor Klasse eine Änderungsbenachrichtigung aus, wenn eine der folgenden Änderungen auftritt:

  • Der Name der überwachten Datei oder des überwachten Verzeichnisses.

  • Die angegebene Datei oder das angegebene Verzeichnis war zum Zeitpunkt der Erstellung des Monitors nicht vorhanden, wurde aber später erstellt. Mit anderen Worten, 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 die Instanz den HostFileChangeMonitor Überblick über bestimmte Änderungen verlieren. In diesem Szenario löst die HostFileChangeMonitor Klasse eine Änderungsbenachrichtigung aus. Dieses Szenario tritt wahrscheinlicher auf, wenn die HostFileChangeMonitor Instanz ein Verzeichnis überwacht, und viele Änderungen treten in einem kurzen Zeitraum im Bereich der Verzeichnisstruktur auf.

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

Wenn Sie Pfade zu einer HostFileChangeMonitor Instanz angeben, müssen verzeichnis- und 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 klasse HostFileChangeMonitor in einer Anwendung ohne ASP.NET verwendet wird, wird die klasse FileSystemWatcher intern zum Überwachen von Dateien verwendet. Daher wird jede Zugriffssteuerungsliste (Access Control List, ACL) auf eine überwachte Datei oder ein überwachtes Verzeichnis auf die Windows Identität des aktuellen Threads angewendet.

Note

Aufrufer müssen über die entsprechenden Berechtigungen für die Codezugriffssicherheit (Code Access Security, CAS) verfügen und über NTFS-Berechtigungen für alle überwachten Verzeichnisse und Pfade verfügen.

Konstruktoren

Name Beschreibung
HostFileChangeMonitor(IList<String>)

Initialisiert eine neue Instanz der HostFileChangeMonitor-Klasse.

Eigenschaften

Name Beschreibung
FilePaths

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

HasChanged

Ruft einen Wert ab, der angibt, dass sich der Zustand geändert hat, der von der ChangeMonitor Klasse überwacht wird.

(Geerbt von ChangeMonitor)
IsDisposed

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

(Geerbt von ChangeMonitor)
LastModified

Ruft einen schreibgeschützten Wert ab, der die letzte Schreibzeit einer überwachten Datei oder eines überwachten Pfads angibt.

UniqueId

Ruft einen Bezeichner für die Instanz ab, die HostFileChangeMonitor auf dem Satz überwachter Verzeichnisse und Dateipfade basiert.

Methoden

Name Beschreibung
Dispose()

Gibt alle Ressourcen frei, die von der aktuellen Instanz der ChangeMonitor Klasse verwendet werden.

(Geerbt von ChangeMonitor)
Dispose(Boolean)

Veröffentlicht alle verwalteten und nicht verwalteten Ressourcen und alle Verweise auf die ChangeMonitor Instanz. Diese Überladung muss durch abgeleitete Änderungsüberwachungsklassen implementiert werden.

(Geerbt von ChangeMonitor)
Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
InitializationComplete()

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

(Geerbt von ChangeMonitor)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
NotifyOnChanged(OnChangedCallback)

Wird von Cacheimplementierern aufgerufen, um einen Rückruf zu registrieren und eine ObjectCache Instanz über die OnChangedCallback Stellvertretung zu benachrichtigen, wenn sich eine Abhängigkeit geändert hat.

(Geerbt von ChangeMonitor)
OnChanged(Object)

Wird von abgeleiteten Klassen aufgerufen, um das Ereignis auszuheben, 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: