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 用於 non-ASP.NET 應用程式中時,類別 FileSystemWatcher 會在內部用來監視檔案。 因此, (ACL) 的任何存取控制清單都會套用至受監視的檔案或目錄,都會套用至目前線程的 Windows 身分識別。

注意

呼叫端必須具有適當層級的程式碼存取安全性 (CAS) 許可權,而且必須具有所有受監視目錄和路徑的 NTFS 許可權。

建構函式

HostFileChangeMonitor(IList<String>)

初始化 HostFileChangeMonitor 類別的新執行個體。

屬性

FilePaths

取得已經傳遞給 HostFileChangeMonitor(IList<String>) 建構函式的目錄和檔案路徑集合。

HasChanged

取得值,這個值表示 ChangeMonitor 類別所監控的狀態已變更。

(繼承來源 ChangeMonitor)
IsDisposed

取得值,這個值表示是否已經處置 ChangeMonitor 類別的衍生執行個體。

(繼承來源 ChangeMonitor)
LastModified

取得唯讀值,這個值表示所監控的檔案或路徑上次寫入的時間。

UniqueId

取得 HostFileChangeMonitor 執行個體的識別項,該識別項的基準是監控目錄和檔案路徑組。

方法

Dispose()

ChangeMonitor 類別的目前執行個體所使用的資源全部釋出。

(繼承來源 ChangeMonitor)
Dispose(Boolean)

釋放所有的 Managed 資源和 Unmanaged 資源,以及對 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)

適用於