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 インスタンスへのパスを指定する場合、ディレクトリとファイルのパスは、ディレクトリまたはファイルへの完全なパスである必要があります。 パス内の相対パスとワイルドカード文字は使用できません。

ASP.NET アプリケーションで HostFileChangeMonitor クラスを使用する場合、監視対象アイテムへのアクセスに使用されるWindows ID は、ASP.NET アプリケーションのアプリケーション ID です。 つまり、アプリケーション ID は次のいずれかになります。

  • プロセス ID。

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

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

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

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 インスタンスに通知するために、Cache 実装者によって呼び出されます。

(継承元 ChangeMonitor)
OnChanged(Object)

依存関係が変更されたときにイベントを発生させるために、派生クラスによって呼び出されます。

(継承元 ChangeMonitor)
ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

適用対象