HostFileChangeMonitor Třída

Definice

Monitoruje adresáře a cesty k souborům a upozorní mezipaměť změn 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 k monitorování stavu zdrojových dat (což je soubor) v systému souborů. Položka mezipaměti je definována pomocí objektu CacheItemPolicy , který poskytuje podrobnosti 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í implementace FileChangeMonitor typu. Tato třída je zapečetěná, proto ji nelze rozšířit. Tato třída je užitečná, pokud chcete použít existující implementaci mezipaměti a monitorovat soubory a adresáře pro změny.

Pro každou zadanou cestu k souboru nebo adresáři třída aktivuje oznámení o změně, HostFileChangeMonitor 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 okamžiku vytvoření monitorování neexistuje, ale byl vytvořen později. Jinými slovy, soubor nebo adresář byl vytvořen v oboru monitorovaných položek.

  • Velikost monitorovaného souboru se změnila.

  • Obsah monitorovaného souboru se změnil 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 současně dojde 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ě. Tento scénář bude pravděpodobně nastat, když HostFileChangeMonitor instance monitoruje adresář a v rozsahu struktury adresářů dochází v krátkém časovém období k mnoha změnám.

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

Při zadávání cest k HostFileChangeMonitor instanci musí být adresář a cesty k souborům úplné cesty k adresáři nebo souboru. Relativní cesty a zástupné znaky v cestách nejsou povoleny.

Při použití třídy HostFileChangeMonitor v aplikaci ASP.NET je identita Windows, která se používá pro přístup k monitorovaným položkám, identita aplikace 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 aplikace běží ze sdílené složky UNC.

Při použití třídy HostFileChangeMonitor v aplikaci, která není ASP.NET, se třída FileSystemWatcher interně používá k monitorování souborů. V důsledku toho se u monitorovaného souboru nebo adresáře použije jakýkoli seznam řízení přístupu (ACL) na Windows identitu aktuálního vlákna.

Note

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

Name Description
HostFileChangeMonitor(IList<String>)

Inicializuje novou instanci HostFileChangeMonitor třídy.

Vlastnosti

Name Description
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 monitorovaný ChangeMonitor třídou se změnil.

(Zděděno od ChangeMonitor)
IsDisposed

Získá hodnotu, která označuje, že odvozená instance ChangeMonitor 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žená na sadě monitorovaných adresářů a cest k souborům.

Metody

Name Description
Dispose()

Uvolní všechny prostředky, které používají aktuální instance 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 sledování změn.

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

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

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

Slouží jako výchozí funkce hash.

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

Získá Type aktuální instance.

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

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

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

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

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

Volání implementátorů mezipaměti k registraci zpětného volání a upozorňovat ObjectCache instanci prostřednictvím delegáta OnChangedCallback , když se závislost změnila.

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

Volá se odvozenými třídami pro 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