HostFileChangeMonitor Classe

Definizione

Monitora le directory e percorsi dei file e notifica alla cache le modifiche apportate agli elementi monitorati. La classe non può essere ereditata.

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
Ereditarietà
HostFileChangeMonitor

Esempio

Nell'esempio seguente viene creato un elemento della cache che usa un HostFileChangeMonitor oggetto per monitorare lo stato dei dati di origine (ovvero un file) nel file system. La voce della cache viene definita usando un CacheItemPolicy oggetto per fornire i dettagli di rimozione e scadenza per la voce della cache.

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

Commenti

La HostFileChangeMonitor classe è un'implementazione concreta del FileChangeMonitor tipo . Questa classe è sealed, pertanto non può essere estesa. Questa classe è utile se si vuole usare un'implementazione della cache esistente e per monitorare file e directory per le modifiche.

Per ogni percorso di file o directory specificato, la HostFileChangeMonitor classe attiva una notifica di modifica se si verifica una delle modifiche seguenti:

  • Il nome del file o della directory monitorata cambia.

  • Il file o la directory specificata non esisteva al momento della creazione del monitoraggio, ma è stato creato in un secondo momento. In altre parole, è stato creato un file o una directory nell'ambito degli elementi monitorati.

  • Le dimensioni di un file monitorato sono state modificate.

  • Il contenuto di un file monitorato è stato modificato o il contenuto di una directory monitorata è cambiato.

  • L'elenco di controllo di accesso (ACL) del file o della directory è stato modificato.

  • Il file o la directory monitorata è stato eliminato.

Se si verificano troppi cambiamenti per il file o la directory monitorata contemporaneamente, l'istanza HostFileChangeMonitor può perdere traccia di modifiche specifiche. In questo scenario la HostFileChangeMonitor classe attiva una notifica di modifica. Questo scenario è più probabile che si verifichi quando l'istanza esegue il HostFileChangeMonitor monitoraggio di una directory e molte modifiche si verificano nell'ambito della struttura di directory in un breve periodo di tempo.

Poiché lo scopo della HostFileChangeMonitor classe è solo segnalare che un elemento è cambiato tra il set di file e directory monitorati, non è considerato importante che i dettagli relativi a una modifica specifica non vengano acquisiti. Lo scopo della HostFileChangeMonitor classe è fornire una notifica che lo stato è stato modificato in modo che una voce o voci della cache possa essere rimossa. Poiché la HostFileChangeMonitor classe non indica esattamente ciò che è cambiato, l'overflow del rilevamento delle modifiche interne è irrilevante.

Quando si specificano percorsi a un'istanza HostFileChangeMonitor , i percorsi di directory e file devono essere percorsi completi per la directory o il file. I percorsi relativi e i caratteri jolly nei percorsi non sono consentiti.

Quando la HostFileChangeMonitor classe viene usata in un'applicazione ASP.NET, l'identità di Windows usata per l'accesso agli elementi monitorati è l'identità dell'applicazione per l'applicazione ASP.NET. In altre parole, l'identità dell'applicazione sarà una delle seguenti:

  • Identità del processo.

  • Identità dell'applicazione configurata.

  • Credenziali UNC se l'applicazione è in esecuzione da una condivisione UNC.

Quando la HostFileChangeMonitor classe viene usata in un'applicazione non-ASP.NET, la FileSystemWatcher classe viene usata internamente per monitorare i file. Di conseguenza, qualsiasi elenco di controllo di accesso (ACL) si applica a un file o una directory monitorata viene applicato all'identità di Windows del thread corrente.

Nota

I chiamanti devono disporre del livello appropriato di autorizzazioni di sicurezza dall'accesso al codice e devono disporre delle autorizzazioni NTFS per tutte le directory e i percorsi monitorati.

Costruttori

HostFileChangeMonitor(IList<String>)

Inizializza una nuova istanza della classe HostFileChangeMonitor.

Proprietà

FilePaths

Ottiene l'insieme di directory e di percorsi di file passato al costruttore HostFileChangeMonitor(IList<String>).

HasChanged

Ottiene un valore che indica che lo stato monitorato dalla classe ChangeMonitor è stato modificato.

(Ereditato da ChangeMonitor)
IsDisposed

Ottiene un valore che indica che viene eliminata un'istanza derivata di una classe ChangeMonitor.

(Ereditato da ChangeMonitor)
LastModified

Ottiene un valore di sola lettura che indica l'ora dell'ultima scrittura di un file o percorso monitorato.

UniqueId

Ottiene un identificatore per l'istanza di HostFileChangeMonitor basata sul set di directory e di percorsi di file monitorati.

Metodi

Dispose()

Rilascia tutte le risorse usate dall'istanza corrente della classe ChangeMonitor.

(Ereditato da ChangeMonitor)
Dispose(Boolean)

Rilascia tutte le risorse gestite e non gestite ed eventuali riferimenti all'istanza di ChangeMonitor. Questo overload deve essere implementato dalle classi derivate di monitoraggio delle modifiche.

(Ereditato da ChangeMonitor)
Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
InitializationComplete()

Chiamato dal costruttore di classi derivate per indicare che l'inizializzazione è terminata.

(Ereditato da ChangeMonitor)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
NotifyOnChanged(OnChangedCallback)

Chiamato dalle implementazioni della cache per registrare un callback e notificare a un'istanza ObjectCache tramite il delegato OnChangedCallback quando una dipendenza viene modificata.

(Ereditato da ChangeMonitor)
OnChanged(Object)

Chiamato dalle classi derivate per generare l'evento quando viene modificata una dipendenza.

(Ereditato da ChangeMonitor)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a