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 ID は、ASP.NET アプリケーションのアプリケーション ID です。 つまり、アプリケーション ID は次のいずれかになります。

  • プロセス ID。

  • 構成されたアプリケーション ID。

  • アプリケーションが UNC 共有から実行されている場合の UNC 資格情報。

クラスが HostFileChangeMonitor non-ASP.NET アプリケーションで使用されている場合、 FileSystemWatcher クラスは内部的にファイルを監視するために使用されます。 その結果、監視対象のファイルまたはディレクトリに適用されるアクセス制御リスト (ACL) は、現在のスレッドの Windows ID に適用されます。

注意

呼び出し元は、適切なレベルのコード アクセス セキュリティ (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)

適用対象