HostFileChangeMonitor Klasse

Definition

Überwacht Verzeichnisse und Dateipfade und benachrichtigt den Cache über Änderungen der überwachten Elemente.Monitors directories and file paths and notifies the cache of changes to the monitored items. Diese Klasse kann nicht vererbt werden.This class cannot be inherited.

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 Cache Element erstellt, das HostFileChangeMonitor ein-Objekt verwendet, um den Status der Quelldaten (eine Datei) im Dateisystem zu überwachen.The following example creates a cache item that uses a HostFileChangeMonitor object to monitor the state of the source data (which is a file) on the file system. Der Cache Eintrag wird mithilfe eines CacheItemPolicy -Objekts definiert, um Entfernungs-und Ablauf Details für den Cache Eintrag bereitzustellen.The cache entry is defined using a CacheItemPolicy object to provide eviction and expiration details for the cache entry.

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 FileChangeMonitor des-Typs.The HostFileChangeMonitor class is a concrete implementation of the FileChangeMonitor type. Diese Klasse ist versiegelt und kann daher nicht erweitert werden.This class is sealed, therefore it cannot be extended. Diese Klasse ist hilfreich, wenn Sie eine vorhandene Cache Implementierung verwenden und Dateien und Verzeichnisse auf Änderungen überwachen möchten.This class is useful if you want to use an existing cache implementation and to monitor files and directories for changes.

Für jeden angegebenen Datei-oder Verzeichnispfad löst HostFileChangeMonitor die Klasse eine Änderungs Benachrichtigung aus, wenn eine der folgenden Änderungen auftritt:For each specified file or directory path, the HostFileChangeMonitor class triggers a change notification if any of the following changes occur:

  • Der Name der überwachten Datei oder des Verzeichnisses ändert sich.The name of the monitored file or directory changes.

  • Die angegebene Datei oder das angegebene Verzeichnis war zum Zeitpunkt der Erstellung des Monitors nicht vorhanden, wurde jedoch später erstellt.The specified file or directory did not exist at the time the monitor was created, but was created later. Anders ausgedrückt: im Bereich der überwachten Elemente wurde eine Datei oder ein Verzeichnis erstellt.In other words, a file or directory was created in the scope of the monitored items.

  • Die Größe einer überwachten Datei wurde geändert.The size of a monitored file changed.

  • Der Inhalt einer überwachten Datei wurde geändert, oder der Inhalt eines überwachten Verzeichnisses wurde geändert.The contents of a monitored file changed, or the contents of a monitored directory changed.

  • Die Zugriffs Steuerungs Liste (ACL) der Datei oder des Verzeichnisses wurde geändert.The access control list (ACL) of the file or directory was changed.

  • Die überwachte Datei oder das überwachte Verzeichnis wurde gelöscht.The monitored file or directory was deleted.

Wenn zu viele Änderungen der überwachten Datei oder des Verzeichnisses gleichzeitig stattfinden, kann HostFileChangeMonitor die Instanz bestimmte Änderungen verfolgen.If too many changes occur for the monitored file or directory at the same time, the HostFileChangeMonitor instance can lose track of specific changes. In diesem Szenario löst die HostFileChangeMonitor -Klasse eine Änderungs Benachrichtigung aus.In this scenario, the HostFileChangeMonitor class triggers a change notification. Dieses Szenario tritt eher auf, wenn die HostFileChangeMonitor -Instanz ein Verzeichnis überwacht und innerhalb eines kurzen Zeitraums viele Änderungen im Bereich der Verzeichnisstruktur auftreten.This scenario is more likely to occur when the HostFileChangeMonitor instance monitors a directory, and many changes occur in the scope of the directory structure in a short period of time.

Da der Zweck HostFileChangeMonitor der-Klasse darin besteht, nur zu signalisieren, dass sich etwas zwischen dem Satz überwachter Dateien und Verzeichnisse geändert hat, ist es nicht wichtig, dass Details zu einer bestimmten Änderung nicht erfasst werden.Because the purpose of the HostFileChangeMonitor class is only to signal that something has changed among the set of monitored files and directories, it is not considered important that details about a specific change are not captured. Der Zweck HostFileChangeMonitor der-Klasse besteht darin, eine Benachrichtigung mit dem Status "geändert" bereitzustellen, sodass ein Cache Eintrag (oder Einträge) entfernt werden kann.The purpose of the HostFileChangeMonitor class is to provide notification that state changed so that a cache entry (or entries) can be evicted. Da die HostFileChangeMonitor Klasse nicht genau angibt, was geändert wurde, ist der Überlauf der internen Änderungs Nachverfolgung unerheblich.Because the HostFileChangeMonitor class does not indicate exactly what changed, internal-change tracking overflow is irrelevant.

Wenn Sie Pfade für eine HostFileChangeMonitor -Instanz bereitstellen, müssen Verzeichnis-und Dateipfade vollständige Pfade zum Verzeichnis oder zur Datei sein.When you supply paths to a HostFileChangeMonitor instance, the directory and file paths must be full paths to the directory or file. Relative Pfade und Platzhalter Zeichen in Pfaden sind nicht zulässig.Relative paths and wildcard characters in paths are not allowed.

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 Anwendungs Identität für die ASP.NET-Anwendung.When the HostFileChangeMonitor class is used in an ASP.NET application, the Windows identity that is used for access to monitored items is the application identity for the ASP.NET application. Dies bedeutet, dass die Anwendungs Identität eine der folgenden ist:In other words, the application identity will be one of the following:

  • Die Prozess Identität.The process identity.

  • Die konfigurierte Anwendungs Identität.The configured application identity.

  • Die UNC-Anmelde Informationen, wenn die Anwendung von einer UNC-Freigabe aus ausgeführt wird.The UNC credential if the application is running from a UNC share.

Wenn die HostFileChangeMonitor -Klasse in einer Non-ASP.NET-Anwendung verwendet wird FileSystemWatcher , wird die-Klasse intern verwendet, um Dateien zu überwachen.When the HostFileChangeMonitor class is used in a non-ASP.NET application, the FileSystemWatcher class is used internally to monitor files. Folglich wird jede Zugriffs Steuerungs Liste (ACL), die für eine überwachte Datei oder ein überwachtes Verzeichnis gilt, auf die Windows-Identität des aktuellen Threads angewendet.As a result, whatever access control list (ACL) applies to a monitored file or directory is applied to the Windows identity of the current thread.

Hinweis

Aufrufer müssen über die entsprechende Ebene der Berechtigungen für die Code Zugriffssicherheit (CAS) verfügen und über NTFS-Berechtigungen für alle überwachten Verzeichnisse und Pfade verfügen.Callers must have the appropriate level of code access security (CAS) permissions and must have NTFS permissions to all monitored directories and paths.

Konstruktoren

HostFileChangeMonitor(IList<String>)

Initialisiert eine neue Instanz der HostFileChangeMonitor-Klasse.Initializes a new instance of the HostFileChangeMonitor class.

Eigenschaften

FilePaths

Ruft die Auflistung von Verzeichnis- und Dateipfaden ab, die an den HostFileChangeMonitor(IList<String>)-Konstruktor übergeben wurde.Gets the collection of directories and file paths that was passed to the HostFileChangeMonitor(IList<String>) constructor.

HasChanged

Ruft einen Wert ab, der angibt, dass der von der ChangeMonitor-Klasse überwachte Zustand geändert wurde.Gets a value that indicates that the state that is monitored by the ChangeMonitor class has changed.

(Geerbt von ChangeMonitor)
IsDisposed

Ruft einen Wert ab, der angibt, dass die abgeleitete Instanz einer ChangeMonitor-Klasse freigegeben wird.Gets a value that indicates that the derived instance of a ChangeMonitor class is disposed.

(Geerbt von ChangeMonitor)
LastModified

Ruft einen schreibgeschützten Wert ab, der den Zeitpunkt des letzten Schreibvorgangs einer überwachten Datei oder eines Pfads angibt.Gets a read-only value that indicates the last write time of a monitored file or path.

UniqueId

Ruft einen Bezeichner für die HostFileChangeMonitor-Instanz ab, der auf dem überwachten Satz von Verzeichnissen und Dateipfaden basiert.Gets an identifier for the HostFileChangeMonitor instance that is based on the set of monitored directories and file paths.

Methoden

Dispose()

Gibt alle von der aktuellen Instanz der ChangeMonitor-Klasse verwendeten Ressourcen frei.Releases all resources that are used by the current instance of the ChangeMonitor class.

(Geerbt von ChangeMonitor)
Dispose(Boolean)

Gibt alle verwalteten und nicht verwalteten Ressourcen und alle Verweise auf die ChangeMonitor-Instanz frei.Releases all managed and unmanaged resources and any references to the ChangeMonitor instance. Diese Überladung muss von abgeleiteten Änderungsüberwachungsklassen implementiert werden.This overload must be implemented by derived change-monitor classes.

(Geerbt von ChangeMonitor)
Equals(Object)

Ermittelt, ob das angegebene Objekt und das aktuelle Objekt gleich sind.Determines whether the specified object is equal to the current object.

(Geerbt von Object)
GetHashCode()

Dient als die Standard-HashfunktionServes as the default hash function.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Geerbt von Object)
InitializationComplete()

Wird vom Konstruktor abgeleiteter Klassen aufgerufen, um anzugeben, dass die Initialisierung abgeschlossen ist.Called from the constructor of derived classes to indicate that initialization is finished.

(Geerbt von ChangeMonitor)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current 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.Called by Cache implementers to register a callback and notify an ObjectCache instance through the OnChangedCallback delegate when a dependency has changed.

(Geerbt von ChangeMonitor)
OnChanged(Object)

Wird von abgeleiteten Klassen aufgerufen, um das Ereignis auszulösen, wenn sich eine Abhängigkeit ändert.Called by derived classes to raise the event when a dependency changes.

(Geerbt von ChangeMonitor)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Geerbt von Object)

Gilt für: