HostFileChangeMonitor Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
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 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 è bloccata, pertanto non può essere estesa. Questa classe è utile se si vuole usare un'implementazione della cache esistente e per monitorare i file e le directory per le modifiche.
Per ogni file o percorso di directory specificato, la HostFileChangeMonitor classe attiva una notifica di modifica se si verificano una delle modifiche seguenti:
Il nome del file o della directory monitorato cambia.
Il file o la directory specificati non esistevano al momento della creazione del monitoraggio, ma è stato creato in seguito. 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 è cambiato o il contenuto di una directory monitorata modificata.
L'elenco di controllo di accesso (ACL) del file o della directory è stato modificato.
Il file o la directory monitorati sono stati eliminati.
Se si verificano troppe modifiche per il file monitorato o la directory 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 quando l'istanza HostFileChangeMonitor monitora 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 monitorati e directory, non è considerato importante che i dettagli relativi a una modifica specifica non vengano acquisiti. Lo scopo della HostFileChangeMonitor classe consiste nel fornire una notifica che lo stato è cambiato in modo che sia possibile eliminare una voce della cache (o voci). Poiché la classe non indica esattamente ciò che è cambiato, il HostFileChangeMonitor 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 delle autorizzazioni appropriate di sicurezza di 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) |