Udostępnij za pośrednictwem


HostFileChangeMonitor Klasa

Definicja

Monitoruje katalogi i ścieżki plików oraz powiadamia pamięć podręczną o zmianach w monitorowanych elementach. Klasa ta nie może być dziedziczona.

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

Przykłady

W poniższym przykładzie tworzony jest element pamięci podręcznej, który używa HostFileChangeMonitor obiektu do monitorowania stanu danych źródłowych (czyli pliku) w systemie plików. Wpis pamięci podręcznej jest definiowany przy użyciu CacheItemPolicy obiektu w celu udostępnienia szczegółów eksmisji i wygaśnięcia wpisu pamięci podręcznej.

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

Uwagi

Klasa HostFileChangeMonitor jest konkretną implementacją FileChangeMonitor typu. Ta klasa jest zapieczętowana, dlatego nie można jej rozszerzyć. Ta klasa jest przydatna, jeśli chcesz użyć istniejącej implementacji pamięci podręcznej i monitorować pliki i katalogi pod kątem zmian.

Dla każdego określonego pliku lub ścieżki HostFileChangeMonitor katalogu klasa wyzwala powiadomienie o zmianie, jeśli wystąpi którakolwiek z następujących zmian:

  • Nazwa monitorowanego pliku lub katalogu zmienia się.

  • Określony plik lub katalog nie istniał w momencie utworzenia monitora, ale został utworzony później. Innymi słowy, plik lub katalog został utworzony w zakresie monitorowanych elementów.

  • Rozmiar monitorowanego pliku został zmieniony.

  • Zawartość monitorowanego pliku została zmieniona lub zmieniona zawartość monitorowanego katalogu.

  • Lista kontroli dostępu (ACL) pliku lub katalogu została zmieniona.

  • Monitorowany plik lub katalog został usunięty.

Jeśli w tym samym czasie wystąpi zbyt wiele zmian dla monitorowanego pliku lub katalogu, HostFileChangeMonitor wystąpienie może utracić śledzenie określonych zmian. W tym scenariuszu HostFileChangeMonitor klasa wyzwala powiadomienie o zmianie. Ten scenariusz jest bardziej prawdopodobny, gdy HostFileChangeMonitor wystąpienie monitoruje katalog, a wiele zmian występuje w zakresie struktury katalogów w krótkim czasie.

Ponieważ celem HostFileChangeMonitor klasy jest tylko sygnał, że coś się zmieniło między zestawem monitorowanych plików i katalogów, nie jest uważane za ważne, że szczegóły dotyczące określonej zmiany nie są przechwytywane. Celem HostFileChangeMonitor klasy jest dostarczenie powiadomienia o zmianie stanu, aby można było eksmitować wpis pamięci podręcznej (lub wpisy). HostFileChangeMonitor Ponieważ klasa nie wskazuje dokładnie tego, co się zmieniło, przepełnienie śledzenia zmian wewnętrznych nie ma znaczenia.

Po podaniu ścieżek do HostFileChangeMonitor wystąpienia katalog i ścieżki plików muszą być pełne ścieżki do katalogu lub pliku. Ścieżki względne i symbole wieloznaczne w ścieżkach są niedozwolone.

Gdy HostFileChangeMonitor klasa jest używana w aplikacji ASP.NET, tożsamość systemu Windows używana do uzyskiwania dostępu do monitorowanych elementów jest tożsamością aplikacji dla aplikacji ASP.NET. Innymi słowy tożsamość aplikacji będzie jedną z następujących czynności:

  • Tożsamość procesu.

  • Skonfigurowana tożsamość aplikacji.

  • Poświadczenie UNC, jeśli aplikacja jest uruchomiona z udziału UNC.

HostFileChangeMonitor Gdy klasa jest używana w aplikacji non-ASP.NET, FileSystemWatcher klasa jest używana wewnętrznie do monitorowania plików. W związku z tym, niezależnie od listy kontroli dostępu (ACL) ma zastosowanie do monitorowanego pliku lub katalogu do tożsamości systemu Windows bieżącego wątku.

Uwaga

Wywołujący muszą mieć odpowiedni poziom uprawnień zabezpieczeń dostępu kodu (CAS) i muszą mieć uprawnienia NTFS do wszystkich monitorowanych katalogów i ścieżek.

Konstruktory

HostFileChangeMonitor(IList<String>)

Inicjuje nowe wystąpienie klasy HostFileChangeMonitor.

Właściwości

FilePaths

Pobiera kolekcję katalogów i ścieżek plików przekazanych do konstruktora HostFileChangeMonitor(IList<String>) .

HasChanged

Pobiera wartość wskazującą, że stan monitorowany przez ChangeMonitor klasę uległ zmianie.

(Odziedziczone po ChangeMonitor)
IsDisposed

Pobiera wartość wskazującą, że pochodne wystąpienie ChangeMonitor klasy jest usuwane.

(Odziedziczone po ChangeMonitor)
LastModified

Pobiera wartość tylko do odczytu, która wskazuje czas ostatniego zapisu monitorowanego pliku lub ścieżki.

UniqueId

Pobiera identyfikator wystąpienia HostFileChangeMonitor opartego na zestawie monitorowanych katalogów i ścieżek plików.

Metody

Dispose()

Zwalnia wszystkie zasoby używane przez bieżące wystąpienie ChangeMonitor klasy.

(Odziedziczone po ChangeMonitor)
Dispose(Boolean)

Zwalnia wszystkie zarządzane i niezarządzane zasoby oraz wszelkie odwołania do ChangeMonitor wystąpienia. To przeciążenie musi być zaimplementowane przez pochodne klasy monitora zmian.

(Odziedziczone po ChangeMonitor)
Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
InitializationComplete()

Wywoływana z konstruktora klas pochodnych, aby wskazać, że inicjowanie zostało zakończone.

(Odziedziczone po ChangeMonitor)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
NotifyOnChanged(OnChangedCallback)

Wywoływane przez implementatory pamięci podręcznej do rejestrowania wywołania zwrotnego i powiadamiania ObjectCache wystąpienia za pośrednictwem OnChangedCallback delegata, gdy zależność uległa zmianie.

(Odziedziczone po ChangeMonitor)
OnChanged(Object)

Wywoływane przez klasy pochodne w celu podniesienia zdarzenia w przypadku zmiany zależności.

(Odziedziczone po ChangeMonitor)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy