HostFileChangeMonitor Classe

Definizione

Monitora le directory e i percorsi dei file e invia una notifica alla cache delle 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 esistevano al momento della creazione del monitoraggio, ma sono stati creati 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 è stato modificato.

  • 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 troppe modifiche per il file o la directory monitorata contemporaneamente, l'istanza HostFileChangeMonitor può perdere la 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 qualcosa è 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 cosa è 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 classe HostFileChangeMonitor viene usata in un'applicazione ASP.NET, l'identità 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 classe HostFileChangeMonitor viene usata in un'applicazione non ASP.NET, la classe FileSystemWatcher 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 applicata all'identità Windows del thread corrente.

Note

I chiamanti devono avere il 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

Nome Descrizione
HostFileChangeMonitor(IList<String>)

Inizializza una nuova istanza della classe HostFileChangeMonitor.

Proprietà

Nome Descrizione
FilePaths

Ottiene la raccolta di directory e percorsi di file passati al HostFileChangeMonitor(IList<String>) costruttore.

HasChanged

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

(Ereditato da ChangeMonitor)
IsDisposed

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

(Ereditato da ChangeMonitor)
LastModified

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

UniqueId

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

Metodi

Nome Descrizione
Dispose()

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

(Ereditato da ChangeMonitor)
Dispose(Boolean)

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

(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 il Type dell'istanza corrente.

(Ereditato da Object)
InitializationComplete()

Chiamato dal costruttore delle classi derivate per indicare che l'inizializzazione è stata completata.

(Ereditato da ChangeMonitor)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
NotifyOnChanged(OnChangedCallback)

Chiamato dagli implementatori della cache per registrare un callback e notificare a un'istanza ObjectCache tramite il OnChangedCallback delegato quando una dipendenza è cambiata.

(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