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 используется в приложении, отличном от ASP.NET, класс FileSystemWatcher используется для мониторинга файлов. В результате любой список управления доступом (ACL) применяется к отслеживаемому файлу или каталогу, который применяется к идентификатору Windows текущего потока.

Note

Вызывающие серверы должны иметь соответствующий уровень разрешений на доступ к коду (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)

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