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 объект для мониторинга состояния исходных данных (который является файлом) в файловой системе. Запись кэша определяется с помощью объекта для предоставления сведений 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) |