HostFileChangeMonitor Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Monitoruje katalogi i ścieżki plików oraz powiadamia pamięć podręczną o zmianach w monitorowanych elementach. Klasa ta nie może być dziedziczona.
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
- Dziedziczenie
Przykłady
W poniższym przykładzie tworzony jest element pamięci podręcznej, który używa HostFileChangeMonitor obiektu do monitorowania stanu danych źródłowych (czyli pliku) w systemie plików. Wpis pamięci podręcznej jest definiowany przy użyciu CacheItemPolicy obiektu w celu udostępnienia szczegółów eksmisji i wygaśnięcia wpisu pamięci podręcznej.
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
Uwagi
Klasa HostFileChangeMonitor jest konkretną implementacją FileChangeMonitor typu. Ta klasa jest zapieczętowana, dlatego nie można jej rozszerzyć. Ta klasa jest przydatna, jeśli chcesz użyć istniejącej implementacji pamięci podręcznej i monitorować pliki i katalogi pod kątem zmian.
Dla każdego określonego pliku lub ścieżki HostFileChangeMonitor katalogu klasa wyzwala powiadomienie o zmianie, jeśli wystąpi którakolwiek z następujących zmian:
Nazwa monitorowanego pliku lub katalogu zmienia się.
Określony plik lub katalog nie istniał w momencie utworzenia monitora, ale został utworzony później. Innymi słowy, plik lub katalog został utworzony w zakresie monitorowanych elementów.
Rozmiar monitorowanego pliku został zmieniony.
Zawartość monitorowanego pliku została zmieniona lub zmieniona zawartość monitorowanego katalogu.
Lista kontroli dostępu (ACL) pliku lub katalogu została zmieniona.
Monitorowany plik lub katalog został usunięty.
Jeśli w tym samym czasie wystąpi zbyt wiele zmian dla monitorowanego pliku lub katalogu, HostFileChangeMonitor wystąpienie może utracić śledzenie określonych zmian. W tym scenariuszu HostFileChangeMonitor klasa wyzwala powiadomienie o zmianie. Ten scenariusz jest bardziej prawdopodobny, gdy HostFileChangeMonitor wystąpienie monitoruje katalog, a wiele zmian występuje w zakresie struktury katalogów w krótkim czasie.
Ponieważ celem HostFileChangeMonitor klasy jest tylko sygnał, że coś się zmieniło między zestawem monitorowanych plików i katalogów, nie jest uważane za ważne, że szczegóły dotyczące określonej zmiany nie są przechwytywane. Celem HostFileChangeMonitor klasy jest dostarczenie powiadomienia o zmianie stanu, aby można było eksmitować wpis pamięci podręcznej (lub wpisy). HostFileChangeMonitor Ponieważ klasa nie wskazuje dokładnie tego, co się zmieniło, przepełnienie śledzenia zmian wewnętrznych nie ma znaczenia.
Po podaniu ścieżek do HostFileChangeMonitor wystąpienia katalog i ścieżki plików muszą być pełne ścieżki do katalogu lub pliku. Ścieżki względne i symbole wieloznaczne w ścieżkach są niedozwolone.
Gdy HostFileChangeMonitor klasa jest używana w aplikacji ASP.NET, tożsamość systemu Windows używana do uzyskiwania dostępu do monitorowanych elementów jest tożsamością aplikacji dla aplikacji ASP.NET. Innymi słowy tożsamość aplikacji będzie jedną z następujących czynności:
Tożsamość procesu.
Skonfigurowana tożsamość aplikacji.
Poświadczenie UNC, jeśli aplikacja jest uruchomiona z udziału UNC.
HostFileChangeMonitor Gdy klasa jest używana w aplikacji non-ASP.NET, FileSystemWatcher klasa jest używana wewnętrznie do monitorowania plików. W związku z tym, niezależnie od listy kontroli dostępu (ACL) ma zastosowanie do monitorowanego pliku lub katalogu do tożsamości systemu Windows bieżącego wątku.
Uwaga
Wywołujący muszą mieć odpowiedni poziom uprawnień zabezpieczeń dostępu kodu (CAS) i muszą mieć uprawnienia NTFS do wszystkich monitorowanych katalogów i ścieżek.
Konstruktory
HostFileChangeMonitor(IList<String>) |
Inicjuje nowe wystąpienie klasy HostFileChangeMonitor. |
Właściwości
FilePaths |
Pobiera kolekcję katalogów i ścieżek plików przekazanych do konstruktora HostFileChangeMonitor(IList<String>) . |
HasChanged |
Pobiera wartość wskazującą, że stan monitorowany przez ChangeMonitor klasę uległ zmianie. (Odziedziczone po ChangeMonitor) |
IsDisposed |
Pobiera wartość wskazującą, że pochodne wystąpienie ChangeMonitor klasy jest usuwane. (Odziedziczone po ChangeMonitor) |
LastModified |
Pobiera wartość tylko do odczytu, która wskazuje czas ostatniego zapisu monitorowanego pliku lub ścieżki. |
UniqueId |
Pobiera identyfikator wystąpienia HostFileChangeMonitor opartego na zestawie monitorowanych katalogów i ścieżek plików. |
Metody
Dispose() |
Zwalnia wszystkie zasoby używane przez bieżące wystąpienie ChangeMonitor klasy. (Odziedziczone po ChangeMonitor) |
Dispose(Boolean) |
Zwalnia wszystkie zarządzane i niezarządzane zasoby oraz wszelkie odwołania do ChangeMonitor wystąpienia. To przeciążenie musi być zaimplementowane przez pochodne klasy monitora zmian. (Odziedziczone po ChangeMonitor) |
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
InitializationComplete() |
Wywoływana z konstruktora klas pochodnych, aby wskazać, że inicjowanie zostało zakończone. (Odziedziczone po ChangeMonitor) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
NotifyOnChanged(OnChangedCallback) |
Wywoływane przez implementatory pamięci podręcznej do rejestrowania wywołania zwrotnego i powiadamiania ObjectCache wystąpienia za pośrednictwem OnChangedCallback delegata, gdy zależność uległa zmianie. (Odziedziczone po ChangeMonitor) |
OnChanged(Object) |
Wywoływane przez klasy pochodne w celu podniesienia zdarzenia w przypadku zmiany zależności. (Odziedziczone po ChangeMonitor) |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |