Sdílet prostřednictvím


HostFileChangeMonitor Třída

Definice

Monitoruje adresáře a cesty k souborům a upozorní mezipaměť na změny monitorovaných položek. Tato třída se nemůže dědit.

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
Dědičnost
HostFileChangeMonitor

Příklady

Následující příklad vytvoří položku mezipaměti, která používá HostFileChangeMonitor objekt ke sledování stavu zdrojových dat (což je soubor) v systému souborů. Položka mezipaměti se definuje pomocí objektu, který CacheItemPolicy poskytuje podrobnosti o vyřazení a vypršení platnosti položky mezipaměti.

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

Poznámky

Třída HostFileChangeMonitor je konkrétní implementací FileChangeMonitor typu. Tato třída je zapečetěna, proto ji nelze rozšířit. Tato třída je užitečná, pokud chcete použít existující implementaci mezipaměti a monitorovat změny souborů a adresářů.

Pro každý zadaný soubor nebo cestu k adresáři HostFileChangeMonitor třída aktivuje oznámení o změně, pokud dojde k některé z následujících změn:

  • Název monitorovaného souboru nebo adresáře se změní.

  • Zadaný soubor nebo adresář v době vytvoření monitorování neexistoval, ale byl vytvořen později. Jinými slovy, soubor nebo adresář byl vytvořen v rozsahu monitorovaných položek.

  • Velikost monitorovaného souboru se změnila.

  • Změnil se obsah monitorovaného souboru nebo se změnil obsah monitorovaného adresáře.

  • Změnil se seznam řízení přístupu (ACL) souboru nebo adresáře.

  • Monitorovaný soubor nebo adresář byl odstraněn.

Pokud u monitorovaného souboru nebo adresáře dojde najednou k příliš mnoha změnám HostFileChangeMonitor , může instance ztratit přehled o konkrétních změnách. V tomto scénáři HostFileChangeMonitor třída aktivuje oznámení o změně. K tomuto scénáři pravděpodobně dojde, když HostFileChangeMonitor instance monitoruje adresář a v krátkém časovém období dojde v oboru adresářové struktury k mnoha změnám.

Vzhledem k tomu, že účelem HostFileChangeMonitor třídy je pouze signalizovat, že se něco změnilo mezi sadou monitorovaných souborů a adresářů, nepovažuje se za důležité, aby nebyly zaznamenány podrobnosti o konkrétní změně. Účelem HostFileChangeMonitor třídy je poskytnout oznámení, že se stav změnil, aby bylo možné vyřadit položku mezipaměti (nebo položky). Vzhledem k tomu, že HostFileChangeMonitor třída neuvádí, co se přesně změnilo, je přetečení sledování interních změn irelevantní.

Když zadáte cesty k HostFileChangeMonitor instanci, musí být cesta k adresáři nebo souboru úplná cesta k adresáři nebo souboru. Relativní cesty a zástupné znaky v cestách nejsou povoleny.

HostFileChangeMonitor Při použití třídy v aplikaci ASP.NET je identita Systému Windows, která se používá pro přístup k monitorovaným položkám, identitou aplikace pro ASP.NET aplikace. Jinými slovy, identita aplikace bude jedna z následujících:

  • Identita procesu.

  • Nakonfigurovaná identita aplikace.

  • Přihlašovací údaje UNC, pokud je aplikace spuštěná ze sdílené složky UNC.

Když se HostFileChangeMonitor třída používá v aplikaci non-ASP.NET, FileSystemWatcher třída se používá interně k monitorování souborů. V důsledku toho se na identitu Windows aktuálního vlákna použije jakýkoli seznam řízení přístupu (ACL) pro monitorovaný soubor nebo adresář.

Poznámka

Volající musí mít odpovídající úroveň oprávnění zabezpečení přístupu kódu (CAS) a musí mít oprávnění NTFS ke všem monitorovaným adresářům a cestám.

Konstruktory

HostFileChangeMonitor(IList<String>)

Inicializuje novou instanci HostFileChangeMonitor třídy.

Vlastnosti

FilePaths

Získá kolekci adresářů a cest k souborům, které byly předány konstruktoru HostFileChangeMonitor(IList<String>) .

HasChanged

Získá hodnotu, která označuje, že stav, který je monitorován ChangeMonitor třídou změněna.

(Zděděno od ChangeMonitor)
IsDisposed

Získá hodnotu, která označuje, že odvozená ChangeMonitor instance třídy je uvolněna.

(Zděděno od ChangeMonitor)
LastModified

Získá hodnotu jen pro čtení, která označuje čas posledního zápisu monitorovaného souboru nebo cesty.

UniqueId

Získá identifikátor pro HostFileChangeMonitor instanci, která je založena na sadě monitorovaných adresářů a cest k souborům.

Metody

Dispose()

Uvolní všechny prostředky, které jsou používány aktuální instancí ChangeMonitor třídy.

(Zděděno od ChangeMonitor)
Dispose(Boolean)

Uvolní všechny spravované a nespravované prostředky a všechny odkazy na ChangeMonitor instanci. Toto přetížení musí být implementováno odvozenými třídami monitorování změn.

(Zděděno od ChangeMonitor)
Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetType()

Získá aktuální Type instanci.

(Zděděno od Object)
InitializationComplete()

Volána z konstruktoru odvozených tříd pro označení, že inicializace je dokončena.

(Zděděno od ChangeMonitor)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
NotifyOnChanged(OnChangedCallback)

Volání implementátory mezipaměti zaregistrovat zpětné volání a upozornit ObjectCache instanci prostřednictvím delegáta OnChangedCallback na změnu závislosti.

(Zděděno od ChangeMonitor)
OnChanged(Object)

Volána odvozenými třídami k vyvolání události při změně závislosti.

(Zděděno od ChangeMonitor)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro