HostFileChangeMonitor Класс

Определение

Контролирует каталоги и пути к файлам и уведомляет кэш об изменениях контролируемых элементов. Этот класс не наследуется.

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
Наследование
HostFileChangeMonitor

Примеры

В следующем примере создается элемент кэша, который использует HostFileChangeMonitor объект для отслеживания состояния исходных данных (то есть файла) в файловой системе. Запись кэша определяется с помощью объекта для предоставления сведений CacheItemPolicy о вытеснениях и истечении срока действия для записи кэша.

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

Комментарии

Класс HostFileChangeMonitor является конкретной реализацией FileChangeMonitor типа . Этот класс запечатан, поэтому его нельзя расширить. Этот класс полезен, если вы хотите использовать существующую реализацию кэша и отслеживать файлы и каталоги на наличие изменений.

Для каждого указанного пути к файлу или каталогу HostFileChangeMonitor класс активирует уведомление об изменении, если происходят какие-либо из следующих изменений:

  • Имя отслеживаемого файла или каталога изменяется.

  • Указанный файл или каталог не существовал на момент создания монитора, но был создан позже. Иными словами, файл или каталог был создан в область отслеживаемых элементов.

  • Размер отслеживаемого файла изменился.

  • Изменено содержимое отслеживаемого файла или содержимое отслеживаемого каталога.

  • Список управления доступом (ACL) файла или каталога был изменен.

  • Отслеживаемый файл или каталог был удален.

Если одновременно происходит слишком много изменений для отслеживаемого файла или каталога, HostFileChangeMonitor экземпляр может потерять отслеживание определенных изменений. В этом сценарии HostFileChangeMonitor класс активирует уведомление об изменениях. Этот сценарий, скорее всего, произойдет, когда HostFileChangeMonitor экземпляр отслеживает каталог, а в область структуры каталогов за короткий период времени произойдет много изменений.

Так как класс предназначен HostFileChangeMonitor только для того, чтобы сообщить о том, что что-то изменилось в наборе отслеживаемых файлов и каталогов, не считается важным, чтобы не были записаны сведения о конкретном изменении. Цель HostFileChangeMonitor класса — предоставить уведомление об изменении состояния, чтобы вытеснили запись кэша (или записи). HostFileChangeMonitor Поскольку класс не указывает, что именно изменилось, переполнение внутреннего отслеживания изменений не имеет значения.

При предоставлении путей к экземпляру HostFileChangeMonitor каталог и пути к файлам должны быть полными путями к каталогу или файлу. Относительные пути и подстановочные знаки в путях не допускаются.

HostFileChangeMonitor Если класс используется в приложении ASP.NET, удостоверение Windows, используемое для доступа к отслеживаемым элементам, является удостоверением приложения для ASP.NET приложения. Другими словами, удостоверение приложения будет одним из следующих:

  • Удостоверение процесса.

  • Настроенное удостоверение приложения.

  • Учетные данные UNC, если приложение выполняется из общей папки UNC.

HostFileChangeMonitor Если класс используется в приложении non-ASP.NET, FileSystemWatcher класс используется для внутреннего мониторинга файлов. В результате любой список управления доступом (ACL), применяемый к отслеживаемому файлу или каталогу, применяется к идентификатору Windows текущего потока.

Примечание

Вызывающие стороны должны иметь соответствующий уровень разрешений на доступ к коду (CAS) и разрешения NTFS для всех отслеживаемых каталогов и путей.

Конструкторы

HostFileChangeMonitor(IList<String>)

Инициализирует новый экземпляр класса HostFileChangeMonitor.

Свойства

FilePaths

Получает коллекцию каталогов и путей к файлам, переданную конструктору HostFileChangeMonitor(IList<String>).

HasChanged

Получает значение, указывающее, что состояние, отслеживаемое классом ChangeMonitor, изменилось.

(Унаследовано от ChangeMonitor)
IsDisposed

Получает значение, указывающее, что производный экземпляр класса ChangeMonitor удален.

(Унаследовано от ChangeMonitor)
LastModified

Получает значение только для чтения, обозначающее время последней операции записи отслеживаемого файла или пути.

UniqueId

Получает идентификатор экземпляра HostFileChangeMonitor, основанный на наборе контролируемых каталогов и путей к файлам.

Методы

Dispose()

Освобождает все ресурсы, используемые текущим экземпляром класса ChangeMonitor.

(Унаследовано от ChangeMonitor)
Dispose(Boolean)

Освобождает все управляемые и неуправляемые ресурсы и все ссылки на экземпляр ChangeMonitor. Эту перегрузку необходимо реализовывать в производных классах, контролирующих изменения.

(Унаследовано от ChangeMonitor)
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
InitializationComplete()

Вызывается из конструктора производных классов и указывает на завершение инициализации.

(Унаследовано от ChangeMonitor)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
NotifyOnChanged(OnChangedCallback)

Вызывается средствами реализации кэша для регистрации обратного вызова и уведомления экземпляра ObjectCache об изменении зависимости с использованием делегата OnChangedCallback.

(Унаследовано от ChangeMonitor)
OnChanged(Object)

Вызывается производными классами для создания события при изменении зависимости.

(Унаследовано от ChangeMonitor)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к