HostFileChangeMonitor Classe

Definição

Monitoriza diretórios e caminhos de ficheiros e notifica a cache das alterações aos itens monitorizados. Esta 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 seguinte cria um item de cache que utiliza um HostFileChangeMonitor objeto para monitorizar o estado dos dados de origem (que é um ficheiro) no sistema de ficheiros. A entrada da cache é definida usando um CacheItemPolicy objeto para fornecer detalhes de expulsão e expiração da entrada da 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

Observações

A HostFileChangeMonitor classe é uma implementação concreta do FileChangeMonitor tipo. Esta classe está selada, por isso não pode ser estendida. Esta classe é útil se quiser usar uma implementação de cache existente e monitorizar ficheiros e diretórios para alterações.

Para cada ficheiro ou diretório especificado, a HostFileChangeMonitor classe dispara uma notificação de alteração se ocorrer alguma das seguintes alterações:

  • O nome do ficheiro ou diretório monitorizado muda.

  • O ficheiro ou diretório especificado não existia na altura em que o monitor foi criado, mas foi criado posteriormente. Por outras palavras, era criado um ficheiro ou diretório dentro do âmbito dos itens monitorizados.

  • O tamanho de um ficheiro monitorizado mudou.

  • O conteúdo de um ficheiro monitorizado alterado, ou o conteúdo de um diretório monitorizado alterado.

  • A lista de controlo de acesso (ACL) do ficheiro ou diretório foi alterada.

  • O ficheiro ou diretório monitorizado foi eliminado.

Se ocorrerem demasiadas alterações no ficheiro ou diretório monitorizado ao mesmo tempo, a HostFileChangeMonitor instância pode perder o rasto a alterações específicas. Neste cenário, a HostFileChangeMonitor classe ativa uma notificação de alteração. Este cenário é mais provável quando a HostFileChangeMonitor instância monitoriza um diretório e muitas alterações ocorrem no âmbito da estrutura do diretório num curto período de tempo.

Como o propósito da HostFileChangeMonitor classe é apenas sinalizar que algo mudou entre o conjunto de ficheiros e diretórios monitorizados, não é considerado importante que detalhes sobre uma alteração específica não sejam capturados. O objetivo da HostFileChangeMonitor classe é notificar que o estado mudou para que uma entrada de cache (ou entradas) possa ser eliminada. Como a HostFileChangeMonitor classe não indica exatamente o que mudou, o excesso de rastreamento interno de alterações é irrelevante.

Quando fornece caminhos para uma HostFileChangeMonitor instância, os caminhos de diretório e ficheiro devem ser caminhos completos para o diretório ou ficheiro. Caminhos relativos e personagens coringa em caminhos não são permitidos.

Quando a classe HostFileChangeMonitor é usada numa aplicação ASP.NET, a identidade Windows usada para aceder a itens monitorizados é a identidade da aplicação da ASP.NET aplicação. Por outras palavras, a identidade da aplicação será uma das seguintes:

  • A identidade do processo.

  • A identidade da aplicação configurada.

  • A credencial UNC se a aplicação estiver a correr a partir de uma partilha UNC.

Quando a classe HostFileChangeMonitor é usada numa aplicação não ASP.NET, a classe FileSystemWatcher é usada internamente para monitorizar ficheiros. Como resultado, qualquer lista de controlo de acesso (ACL) aplicada a um ficheiro ou diretório monitorizado é aplicada à identidade Windows da thread atual.

Note

Os chamadores devem ter o nível adequado de permissões de segurança de acesso ao código (CAS) e permissões NTFS para todos os diretórios e caminhos monitorizados.

Construtores

Name Description
HostFileChangeMonitor(IList<String>)

Inicializa uma nova instância da HostFileChangeMonitor classe.

Propriedades

Name Description
FilePaths

Obtém a coleção de diretórios e caminhos de ficheiros que foi passada ao HostFileChangeMonitor(IList<String>) construtor.

HasChanged

Recebe um valor que indica que o estado monitorizado pela ChangeMonitor classe mudou.

(Herdado de ChangeMonitor)
IsDisposed

Obtém um valor que indica que a instância derivada de uma ChangeMonitor classe está disponível.

(Herdado de ChangeMonitor)
LastModified

Recebe um valor de só leitura que indica o último tempo de escrita de um ficheiro ou caminho monitorizado.

UniqueId

Obtém um identificador para a HostFileChangeMonitor instância que se baseia no conjunto de diretórios e caminhos de ficheiros monitorizados.

Métodos

Name Description
Dispose()

Liberta todos os recursos que são usados pela instância atual da ChangeMonitor classe.

(Herdado de ChangeMonitor)
Dispose(Boolean)

Liberta todos os recursos geridos e não geridos e quaisquer referências à ChangeMonitor instância. Esta sobrecarga deve ser implementada por classes derivadas de monitores de alteração.

(Herdado de ChangeMonitor)
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(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 está concluída.

(Herdado de ChangeMonitor)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
NotifyOnChanged(OnChangedCallback)

Chamado pelos implementadores de cache para registar um callback e notificar uma ObjectCache instância através do OnChangedCallback delegado quando uma dependência mudou.

(Herdado de ChangeMonitor)
OnChanged(Object)

Chamado por classes derivadas para levantar o evento quando uma dependência muda.

(Herdado de ChangeMonitor)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a