HostFileChangeMonitor Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Monitora os caminhos de arquivos e diretórios e notifica o cache sobre alterações nos itens monitorados. Essa classe não pode ser herdada.
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
- Herança
Exemplos
O exemplo a seguir cria um item de cache que usa um HostFileChangeMonitor objeto para monitorar o estado dos dados de origem (que é um arquivo) no sistema de arquivos. A entrada de cache é definida usando um CacheItemPolicy objeto para fornecer detalhes de remoção e expiração para a entrada de 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
Comentários
A HostFileChangeMonitor classe é uma implementação concreta do FileChangeMonitor tipo. Essa classe é selada, portanto, não pode ser estendida. Essa classe será útil se você quiser usar uma implementação de cache existente e monitorar arquivos e diretórios para alterações.
Para cada arquivo ou caminho de diretório especificado, a HostFileChangeMonitor classe disparará uma notificação de alteração se alguma das seguintes alterações ocorrer:
O nome do arquivo ou diretório monitorado é alterado.
O arquivo ou diretório especificado não existia no momento em que o monitor foi criado, mas foi criado posteriormente. Em outras palavras, um arquivo ou diretório foi criado no escopo dos itens monitorados.
O tamanho de um arquivo monitorado foi alterado.
O conteúdo de um arquivo monitorado foi alterado ou o conteúdo de um diretório monitorado foi alterado.
A ACL (lista de controle de acesso) do arquivo ou diretório foi alterada.
O arquivo ou diretório monitorado foi excluído.
Se ocorrerem muitas alterações para o arquivo ou diretório monitorado ao mesmo tempo, a HostFileChangeMonitor instância poderá perder o controle de alterações específicas. Nesse cenário, a HostFileChangeMonitor classe dispara uma notificação de alteração. Esse cenário é mais provável de ocorrer quando a HostFileChangeMonitor instância monitora um diretório e muitas alterações ocorrem no escopo da estrutura de diretório em um curto período de tempo.
Como a finalidade da HostFileChangeMonitor classe é apenas sinalizar que algo mudou entre o conjunto de arquivos e diretórios monitorados, não é considerado importante que os detalhes sobre uma alteração específica não sejam capturados. A finalidade da classe é fornecer uma notificação de que o HostFileChangeMonitor estado foi alterado para que uma entrada de cache (ou entradas) possa ser removida. Como a HostFileChangeMonitor classe não indica exatamente o que mudou, o estouro do controle de alterações internas é irrelevante.
Quando você fornece caminhos para uma HostFileChangeMonitor instância, o diretório e os caminhos de arquivo devem ser caminhos completos para o diretório ou arquivo. Caminhos relativos e caracteres curinga em caminhos não são permitidos.
Quando a HostFileChangeMonitor classe é usada em um aplicativo ASP.NET, a identidade do Windows usada para acesso a itens monitorados é a identidade do aplicativo para o aplicativo ASP.NET. Em outras palavras, a identidade do aplicativo será uma das seguintes:
A identidade do processo.
A identidade do aplicativo configurada.
A credencial UNC se o aplicativo estiver em execução a partir de um compartilhamento UNC.
Quando a HostFileChangeMonitor classe é usada em um aplicativo non-ASP.NET, a FileSystemWatcher classe é usada internamente para monitorar arquivos. Como resultado, qualquer ACL (lista de controle de acesso) se aplica a um arquivo ou diretório monitorado é aplicado à identidade do Windows do thread atual.
Observação
Os chamadores devem ter o nível apropriado de permissões cas (segurança de acesso ao código) e devem ter permissões NTFS para todos os diretórios e caminhos monitorados.
Construtores
HostFileChangeMonitor(IList<String>) |
Inicializa uma nova instância da classe HostFileChangeMonitor. |
Propriedades
FilePaths |
Obtém a coleção de diretórios e caminhos de arquivo que foi passada para o construtor HostFileChangeMonitor(IList<String>). |
HasChanged |
Obtém um valor que indica que o estado monitorado pela classe ChangeMonitor foi alterado. (Herdado de ChangeMonitor) |
IsDisposed |
Obtém um valor que indica que a instância derivada de uma classe ChangeMonitor foi descartada. (Herdado de ChangeMonitor) |
LastModified |
Obtém um valor somente leitura que indica o último tempo de gravação de um caminho ou arquivo monitorado. |
UniqueId |
Obtém um identificador para a instância de HostFileChangeMonitor com base no conjunto de caminhos de arquivo e diretórios monitorados. |
Métodos
Dispose() |
Libera todos os recursos usados pela instância atual da classe ChangeMonitor. (Herdado de ChangeMonitor) |
Dispose(Boolean) |
Libera todos os recursos gerenciados e não gerenciados e todas as referências à instância de ChangeMonitor. Essa sobrecarga deve ser implementada por classes de monitor de alteração derivadas. (Herdado de ChangeMonitor) |
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
InitializationComplete() |
Chamado do construtor de classes derivadas para indicar que a inicialização foi concluída. (Herdado de ChangeMonitor) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
NotifyOnChanged(OnChangedCallback) |
Chamado pelos implementadores de cache para registrar um retorno de chamada e notificar uma instância de ObjectCache por meio do delegado de OnChangedCallback quando uma dependência tiver sido alterada. (Herdado de ChangeMonitor) |
OnChanged(Object) |
Chamado por classes derivadas para gerar o evento quando uma dependência é alterada. (Herdado de ChangeMonitor) |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |