Compartilhar via


HostFileChangeMonitor Classe

Definição

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
HostFileChangeMonitor

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)

Aplica-se a